Orange Blossom Beach obbwiki https://obb.miraheze.org/wiki/Main_Page MediaWiki 1.40.1 first-letter Media Special Talk User User talk Orange Blossom Beach Orange Blossom Beach talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Module Module talk Main Page 0 1 1 2022-06-17T14:31:25Z MediaWiki default 1 Create main page wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 6 1 2022-06-17T22:15:51Z Vorlitix 3 wikitext text/x-wiki __NOTOC__ == Welcome to {{the Orange Blossom Beach Wiki}}! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can preform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and even lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches. 422c523fe83a38a9bc720f3920f7043856accd9b 7 6 2022-06-17T22:16:17Z Vorlitix 3 /* Welcome to {{the Orange Blossom Beach Wiki}}! */ wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can preform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and even lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches. 500fee23777fecfcb7e6a9ed22ffd4cf0f1cc9e1 8 7 2022-06-17T22:20:10Z Hatmanthehat 2 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. fb528b55c12ed7fa3c74723ed85b4367a35d1185 31 8 2022-06-18T00:44:37Z Hatmanthehat 2 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. == So what now? == Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. e5c811886e9f5665203b6cfb1b4974cfbe607c5f 36 31 2022-06-19T20:10:32Z Hatmanthehat 2 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach:About|go here]]. == So what now? == Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. 97171c84149340a27f96640d5eb42294b147a37b 41 36 2022-06-19T21:48:45Z Hatmanthehat 2 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach|go here]]. == So what now? == Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. c55713e9d7ad6d01f66ae03f5caf2fdbfb497528 File:Logo wiki.png 6 2 2 2022-06-17T21:57:27Z Hatmanthehat 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 3 2 2022-06-17T21:58:02Z Hatmanthehat 2 Protected "[[File:Logo wiki.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Favicon.ico 6 3 4 2022-06-17T22:10:26Z Hatmanthehat 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 5 4 2022-06-17T22:10:54Z Hatmanthehat 2 Protected "[[File:Favicon.ico]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Cramework 0 4 9 2022-06-17T22:44:50Z Hatmanthehat 2 cramework wikitext text/x-wiki Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. {{stub}} 4cee573f6aede449f9cf05ded5f0179aac7cbec1 27 9 2022-06-17T23:22:38Z Hatmanthehat 2 wikitext text/x-wiki {{stub}}Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. 324a11bebff4973695deabd90cc2d93e0f8bf352 28 27 2022-06-17T23:22:58Z Hatmanthehat 2 wikitext text/x-wiki {{stub}} Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. 9fa218713ab1b3a3c5da31ddf49a12aaffd77f79 50 28 2022-06-20T04:28:13Z Hatmanthehat 2 wikitext text/x-wiki {{stub}} Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. 62b8eef7e21027004bf5aa131d1acae99f6fd9e2 Module:Asbox 828 5 10 2022-06-17T22:59:02Z Hatmanthehat 2 Created page with "--[[ This module was created by User:CodeHydro (Alexander Zhikun He). User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287 p.templatepage() is derived from the following revision of Template:Asbox/templatepage, author..." Scribunto text/plain --[[ This module was created by User:CodeHydro (Alexander Zhikun He). User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main() p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287 p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791 Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages. --]] local WRAPPER_TEMPLATE, args = 'Template:Asbox' local p, Buffer, stubCats = { --Prevents dupli-cats... get it? Maybe not? cats = setmetatable({}, {__newindex = function(t, i, v) if not rawget(t, i) then rawset(t, i, v) table.insert(t, i) end end}), --initializes variables required by both p.main and p.templatepage init = function(self, frame, page) args, page = args or require('Module:Arguments').getArgs(frame, { wrappers = WRAPPER_TEMPLATE }), page or mw.title.getCurrentTitle() --Ensures demo parameter will never affect category() output for articles self.demo = self.demo or page.namespace ~= 0 and args.demo return args, page end }, require('Module:Buffer') --[[ Formats category links. Stores them until called with cat.done=true Takes multiple or single categories in the form of 'cat' or a table of strings and/or tables containing parts. (See below) ]] local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s' local function category(cat) for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do --[[ If v is a table: [1] = full category name; defaults to local attention if blank k = Category sort key. Prefix before v.t t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t ]] if v and v ~= true then--reject v = nil, false, or true p.cats[catTag:format(tostring(v) == v and v or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|') )] = true end end return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or '' end --[[ Makes an ombox warning; Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}} Will return an empty string instead when ifNot evaluates to true ]] local function ombox(v) if v.ifNot then return end p.ombox = p.ombox or require('Module:Message box').ombox category{v[2]} return p.ombox{ type = 'content', text = v[1] } end --[[ Unlike original template, module now takes unlimited cats! This function also performs most stub category error checks except for the ombox for when main |category= is omitted (See p.template()) ]] local function catStub(page, pageDoc) stubCats = {missing = {}, v = {}} local code for k, _ in pairs(args) do --Find category parameters and store the number (main cat = '') table.insert(stubCats, string.match(k, '^category(%d*)$')) end table.sort(stubCats) for k, v in ipairs(stubCats) do --Get category names and, if called by p.templatepage, the optional sort key local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], '[^%w%p%s]', '')--remove all hidden unicode chars --Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. table.insert(stubCats.v, page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys. v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject or tsort and {cat, k = ' ', t = tsort} or {cat, k = ' *', t = page.text}--note space in front of sort key ) or cat ) --Check category existance only if on the template page (i.e. stub documentation) if page then if not mw.title.new('Category:' .. cat).exists then code = code or mw.html.create'code':wikitext'|category' table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v))) end --[[ Checks non-demo stub template for documentation and flags if doc is present. All stub cats names are checked and flagged if it does not match 'Category: [] stub'. The main stub cat is exempt from the name check if the stub template has its own doc (presumably, this doc would have an explanation as to why the main stub cat is non-conforming). ]] table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and 'Stub message templates with documentation subpages' or not cat:match' stubs$' and {k = 'S', t = page.text} ) end end --Add category names after loop is completed category(stubCats.v) return #stubCats.missing > 0 and ombox{ --Changed, original msg: --One or more of the stub categories defined in this template do not seem to exist! --Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}. 'The following parameter' .. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do') .. ' not exist: ' .. mw.text.listToText(stubCats.missing), {k = 'N', t = page.text} } end --Shows population of categories found by catStub(). Outputs demo values if none local function population() local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n' if not args.category and stubCats[1] ~= false then table.insert(stubCats, 1, false) end for _, v in ipairs(stubCats) do table.insert(wikitext, base:format( v and args['category' .. v] or '{{{category}}}', v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0 )) end return table.concat(wikitext) end --Includes standard stub documention and flags stub templates with bad parameter values. function p.templatepage(frame, page) args, page = p:init(frame, page) local tStubDoc = mw.title.new'Template:Stub documentation' local pageDoc = page:subPageTitle('doc') --Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=. --Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub() return Buffer( ombox{--Show ombox warnings for missing args. ifNot = args.category, 'The <code>|category</code> parameter is not set. Please add an appropriate stub category.', {k = 'C', t = page.text} }) :_(ombox{ ifNot = args.subject or args.article or args.qualifier, 'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.', {k = 'D', t = page.text} }) :_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories :_(category{ done = p.demo ~= 'doc',--Outputs categories if not doc demo 'Stub message templates', args.icon and 'Stub message templates using icon parameter' or args.image and ( mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true or {k = 'B', t = page.text} ) or 'Stub message templates without images', args.imagealt and {k = 'I', t = page.text}, }) :_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation require('Module:Documentation').main{ content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree require('Module:Asbox stubtree').subtree{args = {pagename = page.text}} ) :_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space :_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping ' :_(mw.html.create'code' :wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}') ) :_' produces the message shown at the beginning, and adds the article to the following categor' :_(#stubCats > 1 and 'ies' or 'y') :_':\n' :_(population()) :_(pageDoc.exists and--transclusion of /doc if it exists frame:expandTemplate{title = pageDoc.text} ) :_'\n== General information ==\n' :_(frame:expandTemplate{title = tStubDoc.text}) :_'\n\n'(), ['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].' :_in'The general information is transcluded from [[Template:Stub documentation]]. ' :_(mw.html.create'span' :cssText'font-size:smaller;font-style:normal;line-height:130%' :node(('([%s edit] | [%s history])'):format( tStubDoc:fullUrl('action=edit', 'relative'), tStubDoc:fullUrl('action=history', 'relative') )) ) :_out() :_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and "This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's [" .. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative') .. '| /doc] subpage, which is not protected.' )' <br/>' } )() end function p.main(frame, page) args, page = p:init(frame, page) local output = mw.html.create'table' :addClass'metadata plainlinks stub' :css{background = 'transparent'} :attr{role = 'presentation'} :tag'tr' :node((args.icon or args.image) and mw.html.create'td' :wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( args.image or '', args.pix or '40x30', args.imagealt or 'Stub icon' )) ) :tag'td' :tag'i' :wikitext( Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space ' is a [[' .. mw.site.namespaces.Project.name .. ':stub|stub]]. You can help ' .. mw.site.siteName .. ' by [', page:fullUrl('action=edit', 'relative'), ' expanding it].' ) :done() :node(args.name and require'Module:Navbar'._navbar{ args.name, mini = 'yes', style = 'position: absolute; right: 15px; display: none;' } ) :node(args.note and mw.html.create() :tag'br':done() :tag'span' :css{['font-style'] = 'normal', ['font-size'] = 'smaller'} :wikitext(args.note) :done() ) :allDone() --[[ Stub categories for templates include a sort key (Otherwise all will be indexed under the letter 'T' for 'Template:[] stubs') Articles using the template do not need a sort key since they have unique names. When p.demo equals 'doc', the demo stub categories will appear as those for a stub template. Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art') ]] if page.namespace == 0 then -- Main namespace category'All stub articles' catStub() elseif p.demo then if p.demo ~= 'doc' then catStub() end --Unless p.demo is set to 'art', it will also include error categories normally only shown on --the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space. p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page) output = mw.html.create() :node(output) :tag'small':wikitext( 'Demo categories: ', (category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2')) ):done() :wikitext(p.demo == 'doc' and p.demodoc or nil) else --Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}} local normalizedName = mw.title.new(args.name or '') if normalizedName and normalizedName.fullText == page.fullText then output = mw.html.create():node(output):wikitext(p.templatepage(frame, page)) elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage category{{k = args.name and 'E' or 'W', t = page.text}} end end return output:wikitext(not p.demo and category{done = true} or nil) end return p 7a798e851fafee9eca6669b91f9c8e888f976902 Template:Asbox 10 6 11 2022-06-17T23:00:02Z Hatmanthehat 2 Created page with "<includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> {{En-WP attribution notice|Template:Asbox}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> {{En-WP attribution notice|Template:Asbox}} </noinclude> 5602bfd5c96c05141a02ad2d9483021d868259bf Template:Stub 10 7 12 2022-06-17T23:00:16Z Hatmanthehat 2 Created page with "{{asbox | image = | pix = | subject = | article = article | qualifier = | category = Stubs | tempsort = no | lowercase = y | name = Template:Stub }}" wikitext text/x-wiki {{asbox | image = | pix = | subject = | article = article | qualifier = | category = Stubs | tempsort = no | lowercase = y | name = Template:Stub }} c8372a9cd3ab0d8ef30c901442b93e0675510604 Module:Buffer 828 8 13 2022-06-17T23:01:22Z Hatmanthehat 2 Created page with "--[[============================= This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia All methods were developed independently and any resemblance to other string buffer libraries would be coincidental. Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil o..." Scribunto text/plain --[[============================= This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia All methods were developed independently and any resemblance to other string buffer libraries would be coincidental. Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil on non-tables. https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual Source code comments may be thin at some points because they are intended to be supplemented by the documentation page: https://en.wikipedia.org/wiki/Module:Buffer/doc Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License https://en.wikipedia.org/wiki/Module:Buffer https://en.wikipedia.org/wiki/User:Codehydro =============================--]] local function Valid(v)--type validation if v and v~=true then--reject nil/boolean; faster than 2 type() comparisons local str = tostring(v)--functions not filtered since unlikely passed by accident (Scribunto does not have userdata/thread types) if str~=v and str=='table' then return rawget(v, 1) and table.concat(v) end--tostring(string-type) returns same ref; same refs compare faster than type() if str~='' then return str end--numbers are coerced to string per table.concat op; appending in string form saves ops on repeat concat end end local noOp, MBpairs = function()end do local iMap, vMap, oMap, pIter, pOther, pFast, Next--Map local function init()--init = noOp after first run function Next(t) return next, t end--slightly faster to do this than to use select() function pIter(t, k) k = (iMap[t] or MBpairs(t, true) and iMap[t])[not k and 1 or vMap[t][k]] return k, t[k] end--don't use rawget; accepting unmapped tables does not measurably affect performance. function pOther(t, k) k = (oMap[t] or MBpairs(t, true) and oMap[t])[nil==k and 1 or vMap[t][k]] return k, t[k] end--comparison to nil because false is a valid key function pFast(t, k) k = not k and 1 or k < (vMap[t] or #t) and k + 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached --k and k < (vMap[t] or #t) and k + 1 or not k and 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached local mk = {__mode = 'k'}--use mode 'k'; found that mode 'kv' sometimes garbage collects maps mid-loop (may not error because iterators auto re-map, but that's expensive) init, iMap, vMap, oMap = noOp, setmetatable({}, mk), setmetatable({}, mk), setmetatable({}, mk)--iMap is numeric keys, oMap is non-numeric keys, and vMap points to next key end function MBpairs(t, ...)--pairs always iterates in order local iter, ex = ... iter = iter==init()--nil if iter and not oMap[t] and ex==nil and rawget(t, 1)~=nil and next(t, #t)==nil then--while possible to miss keys, more thorough check would negate the benefit of pFast vMap[t] = #t return pFast, t, nil elseif ... or not vMap[t] or select('#', ...)~=1 then local ti, tn, to, n = {}, {}, {}, #t--reduces table lookups iMap[t], vMap[t], oMap[t] = ti, tn, to for k = 1, n do ti[k], tn[k] = k, k + 1 end--stage one avoids number type checking op in stage two for most numeric keys for k in (ex or Next)(t) do if not tn[k] then table.insert(tonumber(k)~=k and to or ti, k) end end if #ti~=n then table.sort(ti) for k = 1, #ti do tn[ti[k]] = k + 1 end--somewhat wasteful, but trying to avoid overwriting can be even more expensive end for k = 1, #to do tn[to[k]] = k + 1 end end return iter and pIter or oMap[t] and pOther or noOp, t--noOp for mapless end end local parent, rawkey, spec do--new scope for variables not reused outside (reduces number of var names that need to checked outside of scope) local mkv = {__mode='kv', __call=function(t,k,v)t[k]=v return k end}--shared meta for Buffer parent property, raw mode, and specialized functions parent, rawkey, spec = setmetatable({}, mkv), setmetatable({}, mkv), setmetatable({}, mkv)--shared meta less memory end local MB, MBi, MBmix, buffHTML, gfuncs, noCache, Element do--minimize number of locals per scope to reduce time spent sifting through irrelevant variable names local _stream do local stream--keep stream near top of scope local function init(f)--init = noOp after first run local function each(self, ...) for k = 1, select('#', ...) do k = Valid(select(k, ...))--slightly faster than table.insert(self, (Valid(select(k, ...)))) if k then table.insert(self, k) end end return self end init, stream, _stream = noOp, { __call = function(t, v) v = v and Valid(v) return v and table.insert(t, v) or t end,--last_concat cleared before entering stream mode __index = function(t, i) return i=='each' and each or MB.__index(t, i) and setmetatable(t, MB)[i] end,--no table look up minimizes resources to retrieve the only stream function __tostring = function(t) return setmetatable(t, MB)() end } for k, v in next, MB do stream[k] = stream[k] or v end setmetatable(stream, getmetatable(MB)) end function _stream(self, ...) self.last_concat = init() return setmetatable(self, stream):each(...) end end local function isMBfunc(Buffer, s, ...)--helper for :getParent()-like methods (including getBuffer which does not return a parent) return s and (select('#', ...)==0 and--eventually should figure out to make this work for :getHTML which is very similar (not rawkey[s] and tostring(s):match'^_.*' and MB.__index(Buffer, s) and MB.__index(Buffer, s)(Buffer) or MBmix(Buffer, s))--unprefixed function names append as a string or assert(MB.__index(Buffer, s), ('" %s " does not match any available Module:Buffer function'):format(s))(Buffer, ...)--getParent is a one-way trip so one-time assert not expensive ) or Buffer end local function MBselect(n, ...)--helper for :_out and :_str local n, seps = n - 1, {select(2, ...)} if type(seps[n])=='table' then if buffHTML and rawget(seps[n], buffHTML) then return ... end setmetatable(seps, {__index = setmetatable(seps[n], {__index = function(t) return rawget(t, 1) end})})[n] = nil end return ..., seps end local _inHTML do local lastBuffer, lastHTML local function init(...)--init replaced and new version called on return local create, mwFunc = mw.html.create do local mwHTMLmeta = getmetatable(create()) buffHTML, mwFunc, _inHTML = setmetatable(mw.clone(mwHTMLmeta), getmetatable(MB)), mwHTMLmeta.__index--buffHTML declared near top of module; remove _inHTML from outer scope function init(nodes, ...) local name, args, tag = select(... and type(...)=='table' and 1 or 2, nil, ...) tag = create(Valid(name), args) if nodes then table.insert(nodes, tag.parent and tag or rawset(tag, 'parent', parent[nodes])) end if args then local a, b = args.selfClosing, args.parent args.selfClosing, args.parent = nil if next(args) then Element._add(parent(tag.nodes, tag), args) end args.selfClosing, args.parent = a, b--in case args is reused end return tag end for k, v in next, {[mw] = mwHTMLmeta, __call = function(h, v) return MBmix(spec[h.nodes] and h.nodes or spec(setmetatable(parent(h.nodes, h), MB), Element), v) end, __concat = false,--false means take from MB __eq = false } do buffHTML[k] = v or MB[k] end end local nonSelf, BHi = {tag=true,done=true,allDone=true}, buffHTML.__index do local g g = {__index = function(t, i) if gfuncs and gfuncs[i] then g.__index, gfuncs = gfuncs return g.__index[i] end end} setmetatable(nonSelf, g) setmetatable(BHi, g) end for k in next, nonSelf do--any HTML objects returned by these funcs will be granted Module:Buffer enhancements local func = mwFunc[k] BHi[k] = function(t, ...) local HTML = func(t, ...) return parent[HTML] and HTML or setmetatable(parent(HTML, t), buffHTML) end end do local function joinNode(HTML, sep) local nodes, join = HTML.nodes if noCache and rawkey[sep] or Valid(sep) then join, HTML.nodes = tostring(rawset(HTML, 'nodes', {MB.__call(nodes, sep)})), nodes end return join or tostring(HTML) end for k, v in next, { getParent = function(HTML, ...) lastHTML = HTML return MBi.getParent(HTML:allDone(), ...) end,--return to Buffer that created the HTML tree getBuffer = function(HTML, ...) lastHTML = HTML return isMBfunc(lastBuffer, ...) end,--return to last used killParent = function(HTML, ...) MBi.killParent(HTML:allDone(), ...) return HTML end, _out = function(HTML, ...) if ...==0 then MBi._out(HTML.nodes, ...) return HTML end lastHTML, HTML = HTML, HTML:allDone() local n, ops, seps = select('#', ...) if n > 1 then local ops, seps = MBselect(n, ...) return parent[HTML]:_in(joinNode(HTML, rawget(seps, 0))):_out(ops, rawset(seps, buffHTML, true)) end return parent[HTML]:_(joinNode(HTML, ...)) end, _str = function(HTML, ...)--does not set lastHTML if ...==0 then return joinNode(HTML, select(2, ...)) end--passing 0 strings without calling allDone() local HTML, n = HTML:allDone(), select('#', ...) if n > 1 then local ops, seps = MBselect(n, ...) return parent[HTML]:_in(joinNode(HTML, rawget(seps, 1))):_str(ops, rawset(seps, buffHTML, true)) end return joinNode(HTML, ...) end, _parent = function(HTML, ...) table.insert(HTML.nodes, parent[HTML:allDone()]:_str(...)) return HTML end } do BHi[k] = v end end do local htmlArg, skip, outFuncs = {parent=true,selfClosing=true,tagName=true}, {} do local out local function func(nodes, ...) return out(parent[nodes], ...) end outFuncs = setmetatable({ tag = function(nodes, ...) return parent(setmetatable(init(nodes, ...), buffHTML), parent[nodes]) end, done = function(b, ops) b = parent[b] while b.parent and ops~=0 do b, ops = b.parent, ops and ops - 1 or 0 end return b end }, {__index = function(nodes, i) if rawget(BHi, i) then out = BHi[i] return func end--rawget to exclude globals end}) end Element = { _add = function(nodes, t) for k, v in MBpairs(t), t, skip[t] do (v~=true and MBmix or noOp)(nodes, v) end local HTML = parent[nodes] for k, v in MBpairs(t, false) do if htmlArg[k] then HTML[k] = v elseif v and v~=true then if nonSelf[k] then if k=='tag' then if type(v)=='table' then skip[v], k = 1, rawset(create(Valid(v[1])), 'parent', HTML) Element._add(spec(parent(k.nodes, k, table.insert(nodes, k)), Element), v) if k.selfClosing then k.nodes = nil else spec[k.nodes], parent[k.nodes] = nil end--free memory/reduce clutter; parent ref will auto-unset when k.nodes is nil if not k.tagName then k.styles, k.attributes = nil end else table.insert(nodes, create(v)) end elseif mwFunc[k] then if k=='done' and tonumber(v)~=v and v[1] and tonumber(v[1])==v[1] then skip[v] = 1 end MBmix(outFuncs[k](nodes, skip[v] and v[1]).nodes, v) elseif v[1] or v[2] then k = MBi[k](nodes, unpack(v, 1, rawset(skip, v, k=='_B' and 1 or 2)[v])) Element._add(getmetatable(k) and rawget(k, 'nodes') or k, v)--if k is not a table, then v should not contain any extra keys or this may error. else MBi[k](nodes, v) end--k probably == '_G' or '_R' elseif mwFunc[k] then if type(v)~='table' or rawget(v, 'nodes') then mwFunc[k](HTML, v) else local css = k=='css' for x, y in MBpairs(v, true) do (y and y~=true and mwFunc[k] or noOp)(HTML, css and x:gsub('_', '-') or x, y) end--iterate non-numbers first for _, y in MBpairs(v, nil) do (y and y~=true and mwFunc[k] or noOp)(HTML, y) end--don't bother with gsub since text must be quoted anyhow end elseif rawget(Element, k) or rawget(MBi, k) then if tonumber(v)==v or v[1]==nil or getmetatable(v) then (Element[k] or MBi[k])(nodes, v)--v is probably string-able object, or a table to be handled by :_all else (Element[k] or MBi[k])(nodes, unpack(v, 1, table.maxn(v))) end--v is definately a table else mwFunc.css(HTML, k:gsub('_', '-', 1), tostring(v)) end--oddly enough, :_add clocked its fastest runtime after adding auto-gsub as a feature skip[v] = nil end end return nodes end } local tempMeta = {mode='v', copy={styles=true,attributes=true}} function tempMeta.__index(t, i) return tempMeta.copy[i] and rawset(t, i, MBi._cc(false, 0, t.orig[i]))[i] or t.orig[i] end rawkey[setmetatable(Element, {__index = outFuncs, __concat=function(Element, v) return setmetatable({nodes=spec({}, Element),orig=parent[v]}, tempMeta) end})] = math.huge end function MBi:getHTML(...) lastBuffer = self if ... then if select('#', ...)==1 then return not rawkey[s] and tostring(...):match'^_' and BHi[...] and BHi[...](lastHTML) or lastHTML(...) else return assert(BHi[...], ('" %s " does not match any mw.html or Buffer-mw.html function'):format(tostring(...)))(lastHTML, select(2, ...)) end end return lastHTML end function MBi:_html(...) return MBi._(self, lastHTML, select(spec[self]==Element and select('#', ...)==0 and 1 or 2, true, ...)) end return init(...) end function _inHTML(self, ...) local HTML = init(nil, ...) if HTML.selfClosing and spec[self]==Element then self.last_concat = table.insert(self, HTML) return self end lastBuffer, lastHTML = self, setmetatable(parent(HTML, self), buffHTML)--set after 'args' table processed by :_add return HTML end end local _var, unbuild do local prev, rebuild local function init(...)--init replaced before return local function pick(b, v) return b and table.insert(b, v) or v end local function c(a, num) return rawset(a.a or a, 0, a[0] and a[0] + a.c or num and a[1] or a[1]:byte())[0] end local same, build, alt = {__tostring = function(a, b) return a.a[0] and pick(b, a.a.string and string.char(a.a[0]) or a.a.table and a.a[1][a.a[0]] or a.a[0]) end}, { __index = {c = 1}, __tostring = function(t) return t:_build() end, table = function(a, b) local i = next(a[1], a[0]) or a[0]==#a[1] and next(a[1]) return pick(b, rawset(a.a or a, 0, i)[1][i]) end,--change rate (a.c) ignored since users control the table's contents number = function(a, b) return pick(b, c(a, true)) end, string = function(a, b) return pick(b, string.char(c(a))) end }, {__index = function(a, i) return a.a[i] end, __tostring = function(a, b) return (rawget(a, 0) and a[0]==tostring(a[0]) and rawset(a, 0, a[0]:byte()) or a).a._build(a, b) end} local function shift(t, c) t[0] = t[0] and t[0] + c or t:_build() and t[0] - t.c + c if t.table then t[0] = (t[0] - 1) % #t[1] + 1 end end function rebuild(...) local v, c = ... if v or select('#', ...)==0 then if v and not c then return prev end local meta, c = select(v and 1 or 3, alt, c, same, 0) return setmetatable({a = prev, _build = meta.__tostring, c = c}, meta) elseif v==nil then--no-op elseif c then shift(prev, c)--v == false else prev:_build() end end init, noCache = function(v, c) prev = setmetatable({v, c = c, _build = build[type(v)] or v, [type(v)] = true, alt = {}}, build) return prev end, true return init(...) end function unbuild(sep) for k, v in MBpairs(sep, nil) do k = getmetatable(v) if k and (k==build or k==alt) then shift(v.a or v, -v.c) end end end function _var(self, ...) local obj if ... and ...~=true then obj = init(...) elseif prev then if ...~=false then obj = rebuild(...) else rebuild(...) end end return obj and MBi._(self, obj, nil, true) or self end end local lib; MBi = setmetatable({stream = _stream, _inHTML = _inHTML, _var = _var, _ = function(self, v, ...) local at, raw = select(select('#', ...)==1 and ...==true and 1 or 2, nil, ...) if raw then rawkey[self] = math.huge else v = Valid(v) end if v or raw then if at or rawkey[self] then raw = #self end--if length increases by more than one after table.insert, then set rawkey[self] = math.huge; rawkey[self] may be equal to a previous 'at' at, self.last_concat = at and (tonumber(at)~=at and raw + at or at) table.insert(self, select(at and 1 or 2, at, v)) if at and at < 0 or raw and #self - raw > 1 then rawkey[self] = math.huge elseif at and #self==raw then rawkey[self] = rawkey[self] and math.max(rawkey[self], at) or at end end--above line looks bizarre because one table.insert op may make length jump from 0 to 8: local wtf={[2]=2,[4]=4,[8]=8}mw.log(#wtf,table.insert(wtf,1),#wtf) return self end, _nil = function(self, at, ...) if ...~=true and ...~=false then--faster than type(...) ~= 'boolean' if not at or at=='0' then self[#self] = ... if ... then rawkey[self] = math.huge end else local n, v = tonumber(at), ... if n~=at then if n then n = #self + at elseif at~=true and select('#', ...)==0 then v, n = at, #self end end if n then if v==nil and n > 0 then table.remove(self, n) else self[math.floor(n)], rawkey[self] = v, math.huge end--floor position for consistency with Table library end end self.last_concat = nil end return self end, _all = function(self, t, valKey) for k, v in MBpairs(t) do MBmix(self, v, valKey) end for k, v in valKey and MBpairs(t, false) or noOp, t do if tonumber(v) then MBi._(self, k, v)--self not always a buffer elseif rawget(MBi, k) and v and v~=true then if v[1]==nil or getmetatable(v) then MBi[k](self, v) else MBi[k](self, unpack(v, 1, table.maxn(v))) end end end return self end, _str = function(t, ...) local n = select('#', ...) if n > 1 then local k, ops, seps, r = 2, MBselect(n, ...) r = MB(t(seps[1])) while parent[t] and ops > 1 and r:_(parent[t](seps[k]), 1) do t, k, ops = parent[t], k + 1, ops - 1 end return table.concat(r, seps[k] or nil) end return MB.__call(t, ...) end, _in = function (self, ...) return parent(MB(...), self) end, _out = function(t, ...) if ...==0 then return parent(t, parent[t], MBi._cc(t, t, MB.__call(t, (select(2, ...))), getmetatable(t))) end--love how :_cc needed nothing new to implement this *self pat on back* local n = select('#', ...) if n > 1 then local k, ops, seps = 1, MBselect(n, ...) while parent[t] and ops > 0 do t, k, ops = parent[t]:_(t(seps[k])), k + 1, ops - 1 end elseif parent[t] then return parent[t]:_(t(...)) end return t end, _cc = function(self, clear, copy, meta) if clear then if rawequal(clear, copy) then return self, spec[MBi._cc] and setmetatable(spec[MBi._cc], MB)--rawequal to avoid re-string via __eq in case both are different Buffer objects elseif copy==true then copy = self end if clear~=0 then assert(type(clear)=='table', debug.traceback('Buffer:_cc can only "clear" tables. Did you forget to call with a colon?', 2))--errors can be hard to trace without this for k in self and next or noOp, clear do rawset(clear, k, nil) end else return MBi._cc(false, {unpack(copy)}, copy) end--copy length w/o empty strings; recursion to avoid self = false causing garbage collection (non-weak child may exist) if self==false or copy and type(copy)=='table' then--self==false means copy is a table (saves a type op for recursive calls) meta = meta or getmetatable(copy) if self and #copy > 1 then--preserves length with empty strings; developed from studying http://www.lua.org/source/5.1/ltable.c.html local n, null, i, e = #copy, {}, math.ldexp(2, select(2, math.frexp(#copy)) - 2) e, spec[MBi._cc], parent[null] = i - 1, null, clear for k = 1, e do table.insert(clear, false) end while i<=n do table.insert(clear, i, '') i, null[i] = i + math.ldexp(2, select(2, math.frexp(n - i)) - 2), '' end for k = 1, e do rawset(clear, k, nil) end end for k, v in next, copy do rawset(clear, k, type(v)=='table' and MBi._cc(false, 0, v) or v) end elseif copy then rawset(clear, 1, (Valid(copy))) end rawkey[setmetatable(clear, meta)], parent[clear] = rawkey[copy], parent[copy] end return self and rawset(self, 'last_concat', nil) or clear end, _parent = function(self, ...) return parent[self] and MBi._(self, parent[self]:_str(...)) or self end, getParent = function(self, ...) return isMBfunc(parent[self] or parent[parent(self, setmetatable({}, MB))], ...) end, killParent = function(self, ...) return parent[self] and isMBfunc(parent[self], ...) and parent(self) or self end, _build = function(self, t) table.insert(t, self()) end,--for compatibility with mw.html:node() last_concat = false--prevent library check }, {__index = function(t, i)--import string, mw.text, and mw.ustring libraries on an as-needed basis local func = string[i] or mw.text[i] or mw.ustring[i] or type(i)=='string' and mw.ustring[i:match'^u(.+)'] if func then lib = lib or function (s, f, ...) if parent[s] and next(s)==nil then return s:_((f(tostring(parent[Element and (spec[s]==Element and s:allDone() or spec[parent[s]]==Element and parent[s]) or s]), ...))) end return f(tostring(s), ...)--not using ternary/logical operators here to allow multiple return values end return rawset(t, i, i:match'^u?gsub' and function(self, p, r, ...)return lib(self, func, p, r or '', ...)end--Why are ugsub/gsub special? because empty strings are against my religion! or function(self, ...)return lib(self, func, ...)end)[i] end end}) end function MBmix(t, v, ...) return v and ((type(v)~='table' or getmetatable(v)) and MBi._(t, v) or (select('#', ...)==0 and spec[t] and spec[t]._add or MBi._all)(t, v, ...)) or t end--:_all always passes two args local _G, new_G = _G--localize _G for console testing (console _G ~= module _G) return setmetatable({__index = function(t, i) return spec[t] and spec[t][i] or MBi[i] end, __call = function(t, ...) local rawsep, sep, i, j, raw = noCache and rawkey[...] and ..., ... if i or j or rawsep or Valid(sep) then raw, sep, i, j = rawkey[spec[t]] or rawkey[t], rawsep or Valid(sep), i and (i~=tonumber(i) and i + #t or i), j and (j~=tonumber(j) and j + #t or j) if rawsep or raw and (raw>=(j or #t) or i < 1) then raw, i, j = {}, i and math.floor(i), j and math.floor(j)--floor for consistency with table.concat(t, sep, i, j), which ignores decimals raw.lc, t.last_concat = t.last_concat--temporarily unset last_concat to prevent disqualification from mapless iteration for k, v in MBpairs(t) do if raw[1] or not i or k>=i then if j and k > j then break end if raw.s then raw.s = table.insert(raw, tostring(sep)) end--if sep contains v and v is a Buffer-variable, sep must be strung before v k = Valid(v) if k then raw.s = rawsep or sep and raw[1] and table.insert(raw, sep) table.insert(raw, k) end end end if rawsep and not raw.s then raw[#raw] = unbuild(sep) end--unbuild rawsep if final index in t was invalid t.last_concat = raw.lc return table.concat(raw) end return table.concat(t, sep, i and math.max(i, 1), j and math.min(j, #t)) end return MB.__tostring(t) end, __tostring = function(t) if t.last_concat then return t.last_concat end local r = rawkey[spec[t]] or rawkey[t] r = table.concat(r and r>=#t and MBi._all({}, t) or t) return (noCache or rawset(t, 'last_concat', r)) and r end, __concat = function(a, b) if buffHTML then for k = 1, 2 do local v = select(k, a, b)--faster than for k, v in pairs{a, b} do if v and spec[v] and spec[v]==Element then if parent[v].selfClosing then if rawequal(a, b) then return (not noCache or parent[v].tagName) and v:_str(0):rep(2) or v:_str(0)..v:_str(0) end--rawequal avoids premature tostring of Buffer:_var objects; b, a = select(k, b, parent[v], a) else local temp = Element .. v --helper method; returns a mirror of parent[v] MBmix(MBmix(parent(temp.nodes, temp), a), k==1 and spec[b]==Element and parent[b] or b) return buffHTML.__tostring(setmetatable(temp, {__index=parent[v], __mode='v'}))--switch from tempMeta to avoid MBi._cc op of styles/attributes end end end end return table.concat(MBmix(MBmix({}, a), b)) end, __pairs = MBpairs, __ipairs = MBpairs, __eq = function(a, b) return tostring(a)==tostring(b) end--avoid a==b in this module; use rawequal(a,b) when they may be different Buffers (premature tostring waste ops and is bad for Buffer:_var) }, {__tostring = function()return''end, __call = function(self, ...) MB = MB or self if new_G then if ... and _G and ...==_G then new_G = ... end elseif ... and (...==_G or type(...)=='table' and (...)._G==...) then local Nil, mG = {}, (...):getmetatable() or (...):setmetatable{}:getmetatable() new_G, _G, gfuncs = ..., ..., {--gfuncs stored for Buffer:_inHTML; new_G is a is a Module:Buffer local declared just before the final return statement. _G = function(self, i, ...) local X, save = rawget(new_G, i), select('#', ...)==0 and self or ... if i and i~=true and not (X and save and rawequal(X, save)) and rawset(new_G, i, save) and (X~=nil or save==nil and new_G[i]~=nil) then--rawequal in case X is another buffer local mG = getmetatable(new_G) or {__call=mG.__call} if mG.__index then pcall(rawset, mG.__index, i, X) else mG.__index = setmetatable(new_G, mG) and {[i] = X} end end return self, ...--avoiding __eq with rawequal(self,save) is overkill since buffers can self-save without being passed as save end, _R = function(self, i, v, m) if i~='new_G' then if i and i~=true then rawset(new_G, i , v) end elseif not v or v==true or v._G~=_G then new_G = setmetatable(v~=true and v or {}, {__call = mG.__call, __index = v~=true and m~=true and (m or new_G) or nil}) else new_G, (not m and (m~=nil or v==new_G) and Nil or getmetatable(v)).__index = v, m~=true and (m or new_G) or nil end--setting Nil.__index is noOp return self end, _2 = function(self, ...) if new_G[...]~=nil then return new_G[...] end--higher priority so Buffer:_G('new_G', ...) can prevent an overwrite if ...=='new_G' then return rawset((select('#', ...)~=1 and MBi._R(new_G, ...) or new_G), '_G', _G) end return select(select('#', ...)==1 and 1 or 2, self:_G(...))--return only one value; 'return select(2, self:_G(...)) or self' doesn't work for returning nil end, _B = function(self, v) return v or v==nil and Nil end } for k, v in next, gfuncs do MBi[k] = v end setmetatable(Nil,{__concat=MB.__concat,__newindex=noOp,__call=noOp,__tostring=noOp,__metatable=MB,__index=setmetatable({_B=MBi._B,_=function()return Nil end,last_concat=''}, {__index=function(t,i)return (MBi[i] or i and not tonumber(i)) and t._ or nil end})}) function mG.__call(G, k, ...) return (k._G or G.type(k)=='table') and (G.select('#', ...)~=1 and G.rawset(k, ...) or G:rawset(..., k) and k) or G:rawset(k, (...)) and ... end end local new = setmetatable({}, self) if ... and (...)==new_G then return select(2, ...) and MBmix(new:_G((select(2, ...))), select(3, ...)) or new end return ... and MBi._(new, ...) or new end, __index = function(t, i) MB = MB or t return MBi[i] and function(...) return MBi[i](setmetatable({}, t), select(...==t and 2 or 1,...)) end end }) a531c35e1366f84755b75caab181cd45e5330bbe Module:Arguments 828 9 14 2022-06-17T23:02:24Z Hatmanthehat 2 Created page with "-- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string'..." Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Navbar 828 10 15 2022-06-17T23:02:56Z Hatmanthehat 2 Created page with "local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false..." Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e Module:Navbar/configuration 828 11 16 2022-06-17T23:03:44Z Hatmanthehat 2 Created page with "return { ['templatestyles'] = 'Module:Navbar/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class ind..." Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } bbf3d86b48a5b40835e8e232ae9821e6bca390ec Module:Message box 828 12 17 2022-06-17T23:04:33Z Hatmanthehat 2 Created page with "-------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-spee..." Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } e680fc427fcb0ec71939a005ef791dfebc4ba735 18 17 2022-06-17T23:05:31Z Hatmanthehat 2 Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'>''(<span class='date'>%s</span>)''</span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) b1fd4c365d29a34bbcf3aef2adec6701ed0efe45 Module:Message box/configuration 828 13 19 2022-06-17T23:06:02Z Hatmanthehat 2 Created page with "-------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-spee..." Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } e680fc427fcb0ec71939a005ef791dfebc4ba735 Module:No globals 828 14 20 2022-06-17T23:06:49Z Hatmanthehat 2 Created page with "local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt)" Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Yesno 828 15 21 2022-06-17T23:07:27Z Hatmanthehat 2 Created page with "-- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val =..." Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:Documentation 828 16 22 2022-06-17T23:08:15Z Hatmanthehat 2 Created page with "-- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purpos..." Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. omargs.text = text .. makeCategoryLink(message('sandbox-category')) -- 'documentation-clear' return '<div class="' .. message('clear') .. '"></div>' .. require('Module:Message box').main('ombox', omargs) end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. return require('Module:Protection banner')._main{ message('protection-reason-edit'), small = true } elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. return require('Module:Protection banner')._main{ action = 'move', small = true } else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 95ab9de543475e37250dc94558a5508a3c7c3dfc Module:Documentation/config 828 17 23 2022-06-17T23:08:36Z Hatmanthehat 2 Created page with "---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------..." Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[wikipedia:Wikipedia:Template documentation|documentation]] is [[wikipedia:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[wikipedia:Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 81c27f1dccc0f0b9b5e83cc77a1de67f87911837 Template:Stub documentation 10 18 24 2022-06-17T23:09:39Z Hatmanthehat 2 Created page with "This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]]. === What is a stub? === A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject. === How is a stub identified? === * If possible, try to find the most appropriate stub template for the article. A full list can be found at Wikipedia:WikiProject Stub sorting/List of stub..." wikitext text/x-wiki This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]]. === What is a stub? === A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject. === How is a stub identified? === * If possible, try to find the most appropriate stub template for the article. A full list can be found at [[Wikipedia:WikiProject Stub sorting/List of stubs]]. * More than one stub template may be used, if necessary, though no more than four should be used on any article. * Place a stub template ''[[MOS:ORDER|at the very end]]'' of the article, after the "External links" section, any navigation templates, and the category tags. As usual, templates are added by including their name inside double braces, e.g. <code><nowiki>{{stub}}</nowiki></code>. === Further information === Further information can be found at: * [[Wikipedia:Stub]] * [[Wikipedia:WikiProject Stub sorting]] New stub templates and categories (collectively "stub types") should not be created without prior proposal at [[Wikipedia:WikiProject Stub sorting/Proposals]]. This allows for the proper coordination of all stub types across Wikipedia, and for the checking of any new stub type for possible problems prior to its creation. === See also === * [[Template:Empty section]] – To flag an empty section as a '''stub section''' * [[Template:Expand section]] – To flag sections selectively as incomplete * [[Template:Data missing]] – To flag missing information or other data * [[Wikipedia:Article assessment]] <noinclude> {{documentation}} [[Category:Template documentation]] </noinclude> 8bed1c68d6998aafd4d31a1b43e9629a9438ea44 Module:Documentation/styles.css 828 19 25 2022-06-17T23:20:11Z Hatmanthehat 2 Created page with "/* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bott..." sanitized-css text/css /* {{pp|small=yes}} */ .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb Module:Navbar/styles.css 828 20 26 2022-06-17T23:20:37Z Hatmanthehat 2 Created page with "/* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .nav..." sanitized-css text/css /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Category:Roleplaying guides 14 21 29 2022-06-17T23:27:35Z Hatmanthehat 2 new category wikitext text/x-wiki Basically everything you need to know about roleplaying in this game. Pretty important for a headstart to the game. 829c3060f128dbe1f9f7ac3e00070d775eb84627 Category:Lore 14 22 30 2022-06-17T23:35:54Z Hatmanthehat 2 Created page with "How the fictional world of Orange Blossom Beach happened, including everything surrounding the story" wikitext text/x-wiki How the fictional world of Orange Blossom Beach happened, including everything surrounding the story 7697c7561d863d8609cc8eee08abc8a4bdc83735 51 30 2022-06-20T04:29:08Z Hatmanthehat 2 wikitext text/x-wiki How the fictional world of Orange Blossom Beach happened, including everything surrounding the story. Click the other subcategories to discover more about the lore. 87c2b0aed4386e77085d8b79fceb3ca412dd9234 MediaWiki:Sidebar 8 24 33 2022-06-18T14:40:51Z Hatmanthehat 2 Created page with " * navigation ** mainpage|mainpage-description ** guides|Guides to the game ** lore|Lore ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES" wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** guides|Guides to the game ** lore|Lore ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES 9853eeae657448b6f08f6b4716637fc43e9a3ab7 34 33 2022-06-18T14:42:26Z Hatmanthehat 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** Category:Guides|Guides ** Category:Lore|Lore ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES f1d7582c8c8ea67935a81d6b2ec5b70a4a3349ed 43 34 2022-06-20T00:00:20Z Hatmanthehat 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Useful links ** Category:Guides|Guides ** Category:Lore|Lore ** Category:Locations|Locations * SEARCH * TOOLBOX * LANGUAGES f2684f75fdc9ad3f367d4bf21ee8d15c554604ab 44 43 2022-06-20T00:02:10Z Hatmanthehat 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Useful links ** Category:Map_locations|Map locations ** Category:Guides|Guides ** Category:Lore|Lore * SEARCH * TOOLBOX * LANGUAGES 27a39e7be3a5c30ac47b51ef8ccef7b4965e0c11 Category:Guides 14 25 35 2022-06-18T14:46:09Z Hatmanthehat 2 Created page with "General guides on how to play the game, tips-and-tricks on what to do, and how to roleplay." wikitext text/x-wiki General guides on how to play the game, tips-and-tricks on what to do, and how to roleplay. 7c1a358446ec50ef23f6da5951c698573c3919f2 Orange Blossom Beach (game) 0 26 37 2022-06-19T21:43:46Z Hatmanthehat 2 entire new page about OBB wikitext text/x-wiki {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploaders account deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 104d88b6e7580fb2bf85744eafcdefd9f71d48aa 39 37 2022-06-19T21:48:12Z Hatmanthehat 2 Hatmanthehat moved page [[Orange Blossom Beach:About]] to [[Orange Blossom Beach]]: so that it counts as a normal page wikitext text/x-wiki {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploaders account deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 104d88b6e7580fb2bf85744eafcdefd9f71d48aa 42 39 2022-06-19T23:58:25Z Hatmanthehat 2 wikitext text/x-wiki {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 8bbffeec0e08318a0732636e9b23801d9dc76e73 49 42 2022-06-20T04:27:44Z Hatmanthehat 2 wikitext text/x-wiki {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 3f7d2f3abecebcc19c3b18a7710dbf36e58c1499 Orange Blossom Beach:About 4 27 40 2022-06-19T21:48:13Z Hatmanthehat 2 Hatmanthehat moved page [[Orange Blossom Beach:About]] to [[Orange Blossom Beach]]: so that it counts as a normal page wikitext text/x-wiki #REDIRECT [[Orange Blossom Beach]] c57291e33a92d1c69c94afdeef4f58e18014387b Category:Map locations 14 28 45 2022-06-20T04:01:25Z Hatmanthehat 2 Created page with "Main locations in the city. Can range from businesses to streets." wikitext text/x-wiki Main locations in the city. Can range from businesses to streets. d5c1e3cf8c1ede0a1e813291d4a6ca0ffd8de1ff Category:Organizations 14 29 46 2022-06-20T04:03:51Z Hatmanthehat 2 Created page with "[[Category:Lore]]" wikitext text/x-wiki [[Category:Lore]] d226586ab1304beab7a8638b3f42eac2f8cf01ce Central Red 0 30 47 2022-06-20T04:26:31Z Hatmanthehat 2 Created page with "[[Category:Organizations]] Central Red is a semi-private science research company involved in the lore of [[Orange Blossom Beach]]. It was founded in cooperation with the European Union and the United States in 1990. == About ==" wikitext text/x-wiki [[Category:Organizations]] Central Red is a semi-private science research company involved in the lore of [[Orange Blossom Beach]]. It was founded in cooperation with the European Union and the United States in 1990. == About == fe0bce97a8c3512163ede559a99eb5cbbe982f13 48 47 2022-06-20T04:27:02Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Organizations]] Central Red is a semi-private science research company involved in the lore of [[Orange Blossom Beach]]. It was founded in cooperation with the European Union and the United States in 1990. == About == 280f19aab3063ca5f36806c5dd9f9d7d13d01a7b User:Hatmanthehat 2 31 52 2022-06-20T04:37:09Z Hatmanthehat 2 Created page with "hi i make obb scripting and stuff" wikitext text/x-wiki hi i make obb scripting and stuff 2862ce6c270480f52e38cb6b6a34c0987fb5cfcd Central Red - US 0 32 53 2022-06-20T04:37:54Z 2601:346:27F:C2E0:5C10:2DF7:5FCF:3449 0 Created Page wikitext text/x-wiki Central Red - US High Security Storage Facility is a [[Central Red]] storage facility located in [[Orange Blossom Beach, FL]]. Central Red - US was built in the year 1998. 98e32e005e23cb7f313fc314f591da7ef333fbb0 73 53 2022-06-20T05:00:35Z Hatmanthehat 2 wikitext text/x-wiki Central Red - US High Security Storage Facility is a [[Central Red]] storage facility located in [[Orange Blossom Beach, FL]]. Central Red - US was built in the year 1998. [[Category:Map locations]] e015eb139e38de616e4a89ad7c5f86b5fd518572 75 73 2022-06-20T05:20:14Z Carsop 4 wikitext text/x-wiki Central Red - US High Security Storage Facility is a [[Central Red]] storage facility located outside of [[Orange Blossom Beach]] off State Road 30. Central Red - US was built in the year 1998. [[Category:Map locations]] 74b4cc1dec703393d528183bfc375d32a9a7132d Orange Blossom Beach (game) 0 26 54 49 2022-06-20T04:39:47Z Hatmanthehat 2 Hatmanthehat moved page [[Orange Blossom Beach]] to [[Orange Blossom Beach (game)]]: It can mean 2 different things wikitext text/x-wiki {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 3f7d2f3abecebcc19c3b18a7710dbf36e58c1499 58 54 2022-06-20T04:42:48Z Hatmanthehat 2 wikitext text/x-wiki {{about||the city of Orange Blossom Beach|Orange Blossom Beach (city)}} {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 6e602061fbb63e3b58b58cea6b313b075db4d082 59 58 2022-06-20T04:44:26Z Hatmanthehat 2 wikitext text/x-wiki ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach (city)]].'' {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on Roblox created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 8edcb42f0509379e73e9c4142f80e55fda102cf6 60 59 2022-06-20T04:46:13Z Carsop 4 Turned Roblox into a link to the wikipedia page. wikitext text/x-wiki ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach (city)]].'' {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 8f65a432099761fe2869e95978c9c545f2d54e7e 62 60 2022-06-20T04:47:15Z Hatmanthehat 2 wikitext text/x-wiki ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) c0ecc53a7b4a88f54ada48c13addc38d97c16c28 70 62 2022-06-20T04:53:00Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009 Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) 3393ff7e2f6cce32c1e4c6f5db98c8221a955f69 78 70 2022-06-20T18:54:46Z Orangeblossombeach 6 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' {{stub}} Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) f09a01d002f134e47921dca0a35efd1e55cfe5a5 80 78 2022-06-24T14:38:07Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} d5535d6c7d75895b07c128a29fbc3fc5cd26dd68 81 80 2022-06-24T14:38:24Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} 068b35050667fded9e2cd91b6f8c3d5c32c6d7b2 Orange Blossom Beach 0 33 55 2022-06-20T04:39:47Z Hatmanthehat 2 Hatmanthehat moved page [[Orange Blossom Beach]] to [[Orange Blossom Beach (game)]]: It can mean 2 different things wikitext text/x-wiki #REDIRECT [[Orange Blossom Beach (game)]] 23ca74039464c5847f77860f3481de83c2fdfa71 57 55 2022-06-20T04:40:15Z Hatmanthehat 2 wikitext text/x-wiki #REDIRECT [[Orange Blossom Beach (game)]] #REDIRECT [[Orange Blossom Beach (city)]] 133d94ebe7c1a19186741d84651157bbdc04af62 61 57 2022-06-20T04:46:37Z Hatmanthehat 2 Removed redirect to [[Orange Blossom Beach (game)]] wikitext text/x-wiki Orange Blossom Beach is a city that takes place in Florida bc575d8071a196c1373a4e524a50d64f96aa55a5 63 61 2022-06-20T04:48:00Z Hatmanthehat 2 wikitext text/x-wiki ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a city that takes place in Florida 7dd536c7c668613c8a50dbd7dc7cb3b5c30bd778 66 63 2022-06-20T04:49:28Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a city that takes place in Florida fdc2c75e435b512be69da593fff5297795326dc1 79 66 2022-06-21T02:25:16Z Hubblybubbly123 8 added stuff wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 10,345. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the American Headquarters of Central Red, With tests being conducted daily in the facility mainly consisting of teleportation and genetic manipulation technology, with it being on the causes of large seismic activity in the lower Florida area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since it's creation. Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the United States and eventually the World. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for world renowned attorney Earl Harpmann, with his knowledge of the law making him the best Lawyers to ever currently live. 9ac15d04c02cc0cbbfd141dce33b145ccc70d3cc 83 79 2022-06-30T18:59:36Z Orangeblossombeach 6 wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 45,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the American Headquarters of Central Red, With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since it's creation. Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area. 1bba1984afe91850bb581fff97e9e827292a8936 84 83 2022-06-30T19:00:07Z Orangeblossombeach 6 wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the American Headquarters of Central Red, With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since it's creation. Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area. ec431c303c5eb548e2fac187637e6c162cbb5b2f Orange Blossom Beach Filming Studio 0 34 56 2022-06-20T04:40:12Z GyroscopicPrison 7 made it wikitext text/x-wiki The Orange Blossom Beach Filming Studio is a filming studio located near the DuDu store. b49ecd42bd3812a625748b0997c1f4d6b9662967 69 56 2022-06-20T04:52:16Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Map_locations]] The Orange Blossom Beach Filming Studio is a filming studio located near the DuDu store. b30268959a3900081db9b31e7049b0f4ae29616e Main Page 0 1 64 41 2022-06-20T04:48:25Z Hatmanthehat 2 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]]. == So what now? == Check out the information to your left, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. 38ecc7187a2e3d20ec2f9d50961906999d1d1ac0 72 64 2022-06-20T04:56:28Z Hatmanthehat 2 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]]. == So what now? == Check out the information on the sidebar, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. 620ec1f06e178c5ca28356ad3ba3016342454303 82 72 2022-06-30T04:38:21Z Orangeblossombeach 6 wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, Florida. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]]. == So what now? == Check out the information on the sidebar, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. 3ab830ec1aab6ba67e8b970c9e026c6d23fc49ce 90 82 2022-08-25T21:55:40Z Hatmanthehat 2 described what the game has in stock rn wikitext text/x-wiki __NOTOC__ == Welcome to the Orange Blossom Beach Wiki! == Orange Blossom Beach is an upcoming roleplay game on Roblox, in which it takes place in the fictional city of Orange Blossom Beach, Florida. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. This wiki contains information about such mechanics, features, and lore about the fictional city and its history itself. This wiki also contains change logs for updates and bug patches, and miscellaneous information such as guides and technical aspects of the game. For more information about the project, you can [[Orange Blossom Beach (game)|go here]]. == What does this game have in stock right now? == As of writing this; really not that much. We have almost everything planned out, but we're still working on implementing most of the core features the game needs in order to really make it flourish. There's still a lot we need to do in order to make this game as comparable to any other game you would play on Roblox, but so far it's going pretty well. You can go to the game right now and create a private server, which will give you admin powers. From there, you can tinker with the game and what we've made so far. Press F1 to open the console (FN + F1 if you're on a mac, or type /console if you can't press F1). From there, you'll be able to run most console commands. Alternatively, you can chat any console command with prefix "!" and it'll interpret it. And on another topic, if you want guns, they're actually in the game but there's currently no way you can get them through legitimate means. Use the "give" command right now to do that. But soon enough, we'll (hopefully) develop the game to a point where it's actually playable through normal means. == So what now? == Check out the information on the sidebar, there should be some categories you can enter to find information about the game. We suggest you start with the guide that teaches you about the game, ranging from how to play the game to properly roleplaying. b527e93cf5a5ba49fb855320f7cc11608b70b6b8 Orange Blossom Beach:About 4 27 65 40 2022-06-20T04:48:39Z Hatmanthehat 2 Changed redirect target from [[Orange Blossom Beach]] to [[Orange Blossom Beach (game)]] wikitext text/x-wiki #REDIRECT [[Orange Blossom Beach (game)]] 23ca74039464c5847f77860f3481de83c2fdfa71 Category:Miscellaneous information 14 35 67 2022-06-20T04:51:21Z Hatmanthehat 2 Created page with "Miscellaneous information about the game and the project. Not really needed to know how to play the game or anything, but still teaches you about information and facts such as the inner-workings and what was done to make this game." wikitext text/x-wiki Miscellaneous information about the game and the project. Not really needed to know how to play the game or anything, but still teaches you about information and facts such as the inner-workings and what was done to make this game. bad8a72727e27dfcfa4cfb6b88305fd111bfef5e MediaWiki:Sidebar 8 24 68 44 2022-06-20T04:51:48Z Hatmanthehat 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * Useful links ** Category:Miscellaneous information|Miscellaneous information ** Category:Map_locations|Map locations ** Category:Guides|Guides ** Category:Lore|Lore * SEARCH * TOOLBOX * LANGUAGES e5d9e6e4f7a527b472f047f4d1f8326429125c44 Cramework 0 4 71 50 2022-06-20T04:55:43Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous information]] {{stub}} Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in OBB is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. 7e55afd46453ed0f44c454c1c1779ea4051950d9 88 71 2022-08-01T00:37:44Z Hatmanthehat 2 Craemwork addition wikitext text/x-wiki [[Category:Miscellaneous information]] {{stub}} Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. f38800f38633c04f3b4a760ea6358687d60ad57c Central Red 0 30 74 48 2022-06-20T05:19:47Z Orangeblossombeach 6 note to hat, please do this i cant write to save my life wikitext text/x-wiki [[Category:Organizations]] Central Red is a semi-private science research organization involved in the lore of [[Orange Blossom Beach]]. It was founded privately in 1989 however it later was given grants by several players within the European Union and in cooperation with the United States in early 1990. The massive Research Facility started construction around June 1990 located somewhere short of 5 miles north of Arosa, Switzerland with an approximate 400~900 employees housed and working at the facility at all hours == About == 9bf69234d18d50e5bd872964749c0d237f853b38 Category:All stub articles 14 36 76 2022-06-20T16:09:42Z Hatmanthehat 2 Created page with "All the stub articles on this wiki. Please help expand them with detailed and useful information while also including only the important parts about that article (if you can.)" wikitext text/x-wiki All the stub articles on this wiki. Please help expand them with detailed and useful information while also including only the important parts about that article (if you can.) dffc6d07cfecb2130aecc1fdf5778fd91aea3573 Category:Stubs 14 37 77 2022-06-20T16:13:31Z Hatmanthehat 2 Created page with "This is a category of articles with the <nowiki>{{stub}}</nowiki> tag in them. If it is correctly placed there, then please make sure to expand them. If they have been expanded since the tag was originally added to the page, please remove the tag." wikitext text/x-wiki This is a category of articles with the <nowiki>{{stub}}</nowiki> tag in them. If it is correctly placed there, then please make sure to expand them. If they have been expanded since the tag was originally added to the page, please remove the tag. fb8068e2de96ea25a670e343c60c80015a8671db French New Toulon 0 38 85 2022-06-30T20:33:48Z Orangeblossombeach 6 Created page with "test" wikitext text/x-wiki test a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 86 85 2022-07-10T02:45:49Z Orangeblossombeach 6 wikitext text/x-wiki something something french colonists mid 1500s pls edit motor 7948333d74e9c3fe76914198eb358cb48ad39165 87 86 2022-07-19T07:27:09Z Orangeblossombeach 6 wikitext text/x-wiki something something french colonists mid 1500s pls edit motor yah 593b50b42009e44c1e51e6ff72471c1e23965d48 Category:Versions 14 39 89 2022-08-01T00:42:25Z Hatmanthehat 2 Created page with "[[Category:Miscellaneous information]] All versions/game updates for [[Orange Blossom Beach (game)|Orange Blossom Beach]] categorized into one page." wikitext text/x-wiki [[Category:Miscellaneous information]] All versions/game updates for [[Orange Blossom Beach (game)|Orange Blossom Beach]] categorized into one page. 9670299c190ec7d75f2bf1d2df5bc8e3d9a3b403 Template:Code 10 40 91 2022-08-27T19:36:07Z Hatmanthehat 2 Created page with "{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>" wikitext text/x-wiki {{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude> ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf Changing the environment 0 41 92 2022-08-28T04:30:50Z Hatmanthehat 2 Created page with "[[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to some kind of weather. Changing..." wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to some kind of weather. Changing the season or time requires changing another value, which will be demonstrated below. The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} 3158445a00349211d4e01d9b33fe1f793b4e072d 93 92 2022-08-28T05:59:29Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} == Changing the weather== You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Changing the season or time requires changing another flag, which will be demonstrated below. ee2d60464bf887eba94114506c214ee621ac35a9 94 93 2022-08-28T06:02:19Z Hatmanthehat 2 /* Changing the season */ wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach using the console commands. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Changing the season or time requires changing another flag, which will be demonstrated below. 6095fc0bef867595021a9fbfb92397590c541295 95 94 2022-08-28T06:03:05Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Changing the season or time requires changing another flag, which will be demonstrated below. 943b8ce47efb7cb023389bc3215ae4e5dc3e9ac7 96 95 2022-08-28T06:08:09Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Here’s the list of numbers that correspond to a type of weather: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} 73b66252d81461606068306919ea7b54747cf52f 97 96 2022-08-28T06:08:41Z Hatmanthehat 2 /* Changing the weather */Test wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Here’s the list of numbers that correspond to a type of weather: {{code|0 - Sunny\n1 - Cloudy}} {{code|1 - Cloudy}} {{code|2 - Clear}} 456f40d301c7983f0213dbfc7e59dc17834386ee 98 97 2022-08-28T06:13:15Z Hatmanthehat 2 /* Changing the weather */ wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach is an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Here’s the list of numbers that correspond to a type of weather: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} 73b66252d81461606068306919ea7b54747cf52f 99 98 2022-08-28T06:20:12Z Hatmanthehat 2 /* Changing the time */ wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Here’s the list of numbers that correspond to a type of weather: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} f1d5304c07e0a3818ed5ff0cc7c9d7442dbae791 100 99 2022-09-17T17:17:53Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. Weather can sometimes change to other types of weather. If you change it to rain, it could automatically change to drizzle weather, or a thunderstorm. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what. === Weather Integers == Here’s the list of integers that correspond to which weather should be set: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} {{code|3 - Rain}} {{code|4 - Thunderstorm}} {{code|5 - Fog}} {{code|6 - Snow}} {{code|7 - Heavy Thunderstorm}} {{code|8 - Drizzle}} 4f69b087f0e1e387481e4f7aefabff2bf098bc9e 101 100 2022-09-17T17:18:21Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. == Changing the time == The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. Weather can sometimes change to other types of weather. If you change it to rain, it could automatically change to drizzle weather, or a thunderstorm. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what. === Weather Integers === Here’s the list of integers that correspond to which weather should be set: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} {{code|3 - Rain}} {{code|4 - Thunderstorm}} {{code|5 - Fog}} {{code|6 - Snow}} {{code|7 - Heavy Thunderstorm}} {{code|8 - Drizzle}} 781b6eea83147229255bcf6e2f57d9364cfc7c65 102 101 2022-09-17T23:18:26Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is a bit complicated. Changing the weather, season, or time of day requires some console commands to be performed. Here’s how to do it. Note that this system was designed in mind to only be changed automatically; problems may occur. == Changing the time == The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. == Changing the season == If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== Lastly, the weather. Weather can sometimes change to other types of weather. If you change it to rain, it could automatically change to drizzle weather, or a thunderstorm. You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what. === Weather Integers === Here’s the list of integers that correspond to which weather should be set: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} {{code|3 - Rain}} {{code|4 - Thunderstorm}} {{code|5 - Fog}} {{code|6 - Snow}} {{code|7 - Heavy Thunderstorm}} {{code|8 - Drizzle}} 06c282ee7c3a8e0ae57f6f8adb4dff3af8d6b1bc File:Changing the environment demonstration.png 6 42 103 2022-10-02T19:51:40Z Hatmanthehat 2 wikitext text/x-wiki Taken in Cramework Testing Initiative 69ed41f48e970f92cc92953f0994d2eda96a18d9 Changing the environment 0 41 104 102 2022-10-02T20:06:46Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Guides]] This is a guide for changing the environment in Orange Blossom Beach. This guide doesn't apply in public servers, but you can attempt this in private servers (only if you have admin privileges!) == Overview == Changing the environment in Orange Blossom Beach is easy to do with the built-in admin menu. It is possible to change the environment with only the console, but it's a bit complicated. This guide will show you how to change the time, season or weather, each with a simple method and an advanced method. It's highly recommended to do the simple method, because it's more streamlined and automated. == Changing the time == === Simple (Highly recommended) === [[File:Changing the environment demonstration.png|thumb|The Environment tab]] Open the Admin Menu by pressing Q, then go to Settings. Click the Environment tab. This is where you'll find menus on changing the time of day. We recommend you to only use the presets, because it's good enough for 99% of use cases. However, you can still use the manual option by inputting hours, minutes and seconds. The rest of this is self-explanatory. === Advanced === The time system in Orange Blossom Beach mainly involves an infinitely increasing number that progresses by 0.5 every second. Each whole number is a whole in-game minute. The game progresses by 30 in-game seconds for every real-time second. It's possible to manipulate this system using the console commands, letting you control the time. As an example, you can run {{code|set TimeTicks 100}} to make the game set the time to only 100 in-game minutes. ==== Drawbacks to the advanced method ==== The game decides when to change the weather through a flag called {{code|TimeTicksUntilWeatherChanges}}. When the {{code|TimeTicks}} flag reaches a value above this other flag, it will change the weather. Then the {{code|TimeTicksUntilWeatherChanges}} flag will set to a value higher than what it was initially. If you change the {{code|TimeTicks}} flag to a value much lower than this other flag, it will take a long time to change the weather. If you want a workaround for this, just also change the {{code|TimeTicksUntilWeatherChanges}} flag to be a few hundred seconds higher than the {{code|TimeTicks}} flag when you change the time. This problem does not happen with the simple method, because the game automatically changes both flags. == Changing the season == === Advanced (no simple method for now) === If you set the time to a number high enough, it'll set it to at least a few months. Seasons correspond to which month it currently is (not realistic of course, but it's a game) Here's a list of console commands that change the time to the start of certain months: {{code|set TimeTicks}} As you change the time to be at least a few months, you will notice that the seasons start changing. It’s very subtle, but trust me, it happens. == Changing the weather== === Simple (Highly recommended) === Open the Admin Menu by pressing Q, then go to Settings. Click the Environment tab. This is where you'll find menus on changing the weather. Rest is self-explanatory. === Advanced === You can manually change the weather through {{code|set Weather}} but you have to input a number that corresponds to a type of weather. Example: Running {{code|set Weather 3}} will make it rainy weather. 3 is the integer for rain, which is why it changes to that. Read below for which integers correspond to what. ==== Weather Integers ==== Here’s the list of integers that correspond to which weather should be set: {{code|0 - Sunny}} {{code|1 - Cloudy}} {{code|2 - Clear}} {{code|3 - Rain}} {{code|4 - Thunderstorm}} {{code|5 - Fog}} {{code|6 - Snow}} {{code|7 - Heavy Thunderstorm}} {{code|8 - Drizzle}} 62524482520192072dc9e1cde7fb3aadf06ebea7 User:Vorlitix 2 43 105 2022-10-11T00:06:26Z Vorlitix 3 i changed me wikitext text/x-wiki hello 1 man of 3 your's truly the whale f45b17cf6d16f67ef1d699442b8a7356aaff0b33 117 105 2022-10-11T04:44:01Z Vorlitix 3 wikitext text/x-wiki hello 1 man of 3 signed your's truly the whale 94d7aded29626a1ada3658cee91d40d1d52f9358 118 117 2022-10-11T04:44:17Z Vorlitix 3 wikitext text/x-wiki hello 1 man of 3 signed, your's truly, the whale 04013740fb117f97fd03b5faf739884eafc1a773 119 118 2022-10-11T04:47:11Z Vorlitix 3 wikitext text/x-wiki hello 1 man of 3 signed, yours truly, the whale b2c40379b2027b65ecf946214b3d5612109c6583 Orange Blossom Beach 0 33 106 84 2022-10-11T02:09:55Z Vorlitix 3 wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of infamous fast food chain, Tacoball. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area. 5133d939f70aa72cb8199bff32dfdebfa138dada 115 106 2022-10-11T03:23:26Z Vorlitix 3 wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of infamous fast food chain, [[Tacoball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area. 860b863af9a25270d784e9b04850bf5745fc0909 Taco Ball 0 44 107 2022-10-11T02:14:59Z Vorlitix 3 Created page with "Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Bell (1929-2006) in the city of [[Orange Blossom Beach]]" wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Bell (1929-2006) in the city of [[Orange Blossom Beach]] f48db41920826c8f8e115bf0c9390979762c60bc 108 107 2022-10-11T03:14:33Z Vorlitix 3 the entirety wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. 2b29debaa141c8133b4164cec15f675f3fb4361e 110 108 2022-10-11T03:19:00Z Vorlitix 3 wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. 4e3ed0b154739099511a8e7d2b6345944d5517c1 111 110 2022-10-11T03:21:12Z Vorlitix 3 wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category: Map Locations]] 6daa9773b43e2073b49810dd628110d1ca57dc71 112 111 2022-10-11T03:21:32Z Vorlitix 3 wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category: Map_Locations]] e8a4d2f0e2b47d3d183d3610093ed787e32e047c 113 112 2022-10-11T03:22:14Z Vorlitix 3 wikitext text/x-wiki |Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category:Map_Locations]] c64f53b0eff067c9cd59f87a672d2a796f99fd55 114 113 2022-10-11T03:22:51Z Vorlitix 3 wikitext text/x-wiki |Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] 82aa7ec3e563b8022abd8296d4124d3a888bff0e 116 114 2022-10-11T03:27:21Z Vorlitix 3 wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and inside additions to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] b412eac1b49610302f454d28a0a3a6eec0cd3c6e 140 116 2022-10-11T15:36:49Z Vorlitix 3 wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 7 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] 707304a5ac2b971f1b33abdc9bb78cfcb35c35a1 141 140 2022-10-11T15:39:24Z Vorlitix 3 wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] c308937b41e58ae5a77616639a2146cc8f2e3cd4 File:Tacoball as of December 10th, 2008.png 6 45 109 2022-10-11T03:16:06Z Vorlitix 3 wikitext text/x-wiki The original Tacoball resturant. b899a08921f93b0fa8283ec88339ed90c29a4b89 File:Neighborhood RP Thumbnail 10-17-2021.jpg 6 46 120 2022-10-11T06:21:52Z Vorlitix 3 wikitext text/x-wiki The thumbnail of Neighborhood RP on 10/17/2021 44eb8050deca4c0393da2256e5e45c4cbca2aefc Orange Blossom Beach (game) 0 26 121 81 2022-10-11T06:49:16Z Vorlitix 3 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== ''For more information, see [[Neighborhood RP]]'' The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} 9664e085ef029dda5c5dd394757cf4db7ed5228b Neighborhood RP 0 47 122 2022-10-11T06:53:53Z Vorlitix 3 i made the entire page wikitext text/x-wiki [[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]] Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 25, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable. == Development == Neighborhood RP was worked on from 12/25/2020 to 3/30/2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only. === Generation 1 === Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map. === Generation 2 === Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than 2.5. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting. === Generation 3 === Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach. ''For the next version, see OBB [[Alpha 0.0.1]]'' 1c5610f417e09e8b6f5d2caf9aca099b48944cb6 132 122 2022-10-11T15:22:24Z Vorlitix 3 wikitext text/x-wiki [[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]] Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 25, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable. == Development == Neighborhood RP was worked on from 12/25/2020 to 3/30/2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only. === Generation 1 === Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map. === Generation 2 === Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than 2.5. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting. === Generation 3 === Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach. ''For the next version, see OBB [[Alpha 0.0.1]]'' [[Category:Versions]] 788b4df322b622a9418c9ef594d6f03861b48a39 139 132 2022-10-11T15:35:18Z Vorlitix 3 wikitext text/x-wiki [[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]] Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 25, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable. == Development == Neighborhood RP was worked on from December 25, 2020 to March 30, 2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only. === Generation 1 === Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map. === Generation 2 === Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than the previous map. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting. === Generation 3 === Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach. ''For the next version, see OBB [[Alpha 0.0.1]]'' [[Category:Versions]] 566cdb32e03fff635431651d438c5f0dec264d94 146 139 2022-10-11T15:49:54Z Vorlitix 3 wikitext text/x-wiki [[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]] Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 5, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable. == Development == Neighborhood RP was worked on from December 5, 2020 to March 30, 2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only. === Generation 1 === Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map. === Generation 2 === Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than the previous map. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting. === Generation 3 === Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach. ''For the next version, see OBB [[Alpha 0.0.1]]'' [[Category:Versions]] 95c66032daa49fa3026c8c9f21b11a6bfe07842a Alpha 0.0.1 0 48 123 2022-10-11T06:59:20Z Vorlitix 3 Created page with "OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]] == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings..." wikitext text/x-wiki OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]] == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP map, because Neighborhood RP was still in development at this time. The house wasn't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. For the previous version, see Neighborhood RP. For the next version, see 0.0.2 cc843ba1beaca41b0d2930454a77cfba6b6a2e24 124 123 2022-10-11T15:08:04Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]] == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP map, because Neighborhood RP was still in development at this time. The house wasn't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. For the previous version, see Neighborhood RP. For the next version, see 0.0.2 [[Category:Versions]] 643f8e6726e3f230fe4080f9577e009342b3b6eb 125 124 2022-10-11T15:15:37Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first some unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]] == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[0.0.2]]'' [[Category:Versions]] 004f6c5ae1933dbb60d5722b1848c758f54e09c9 126 125 2022-10-11T15:16:17Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. It followed after [[Neighborhood RP]] == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[0.0.2]]'' [[Category:Versions]] 82fec3e6ec40e6615a575232f85bc67abc3ffc8c 127 126 2022-10-11T15:17:15Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[0.0.2]]'' [[Category:Versions]] 15f0dfce10d97953b404b60b4b438fddb40c9b44 128 127 2022-10-11T15:19:32Z Vorlitix 3 /* Development */ wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[Alpha 0.0.2|0.0.2]]'' '' ''[[Category:Versions]]'' 7d6b5702e55ef1b59466b0ac796cf53597412929 129 128 2022-10-11T15:21:06Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[Alpha 0.0.2|0.0.2]] ''[[Category:Versions]]'' e455fd75e9bfa33efb0fac4951b69d49186f4923 130 129 2022-10-11T15:21:32Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[Alpha 0.0.2|0.0.2]] ''[[Category:Versions]]'' 7f859e23410dbb86c0c52e38da6b276f0969a2c0 131 130 2022-10-11T15:21:54Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[Alpha 0.0.2|0.0.2]] ''[[Category:Versions]]'' e455fd75e9bfa33efb0fac4951b69d49186f4923 133 131 2022-10-11T15:23:28Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[Alpha 0.0.2|0.0.2]]" [[Category:Versions]] 91e9b989e958141b6d822f562dd44cd4a4708620 134 133 2022-10-11T15:23:51Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] For the next version, see [[Alpha 0.0.2|0.0.2]] [[Category:Versions]] ffbaa49339d8749299e8950deb2758a3b27f8551 135 134 2022-10-11T15:24:04Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2|0.0.2]]'' [[Category:Versions]] 42a082ea47fa7eda206420c9ce5fc8c215151474 136 135 2022-10-11T15:25:22Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] 5e421fcb3c3c6145bd0527d2cfb4a7e4de5362f3 142 136 2022-10-11T15:43:39Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around late 2021, however 0.0.1 was never fully released as it was what to become the modern map of the city of Orange Blossom Beach. == Development == ''For the Pre-OBB era, see [[Neighborhood RP]]'' Most of the game is unknown as it is just a simple map featuring [[Tacoball]] and a few office buildings. It lacked the addition of the Neighborhood RP house and a few of its buildings, because Neighborhood RP was still in development at this time. The only few buildings brought from Neighborhood RP weren't added until [[Alpha 0.0.4]] when Orange Blossom Beach fully replaced Neighborhood RP. Development of Alpha 0.0.1 was around August to September of 2021 and was only a basic side project by the maps creator. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] c7d40c32a384e62a1b6da996252fe71e1377c09a Alpha 0.0.2 0 49 137 2022-10-11T15:25:53Z Vorlitix 3 Created page with "OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings. == Development == Development is unknown. ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]''" wikitext text/x-wiki OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings. == Development == Development is unknown. ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' ca3430ad556e2b2d96a8f1d4083208686ee9e062 138 137 2022-10-11T15:26:29Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created on MONTH, DAY, YEAR. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings. == Development == Development is unknown. ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 51df1f38d92168a2becfa8faf501356ca11ecce2 145 138 2022-10-11T15:48:17Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is the second unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created roughly around December, 2021 or January, 2022. 0.0.2 was still a basic map from 0.0.1 but included more additions and various buildings. == Development == Development is unknown but includes various small map improvements. ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 5eef937807d1d28a3e757a8b421f2156d30a775c Alpha 0.0.3 0 50 143 2022-10-11T15:46:17Z Vorlitix 3 Created page with "OBB Alpha 0.0.1 is the third unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around February/March, 2022 and was the final revision for the original OBB map. == Development == Not much is known about development, but the map opted for a terrain-based design that would stick with the game. It also was the map that was uploaded in Alpha 0.0.4 as that was when the game went public and replaced [[Neighborhood RP]]. A few buildin..." wikitext text/x-wiki OBB Alpha 0.0.1 is the third unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around February/March, 2022 and was the final revision for the original OBB map. == Development == Not much is known about development, but the map opted for a terrain-based design that would stick with the game. It also was the map that was uploaded in Alpha 0.0.4 as that was when the game went public and replaced [[Neighborhood RP]]. A few buildings from the final Neighborhood RP map were added but as far off sections and were never revisited. Most of these buildings were later revamped in future versions. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' dfb3d8be38780978927047530ef204f5c82dcd97 144 143 2022-10-11T15:46:53Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the third unreleased update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was created around February/March, 2022 and was the final revision for the original OBB map. == Development == Not much is known about development, but the map opted for a terrain-based design that would stick with the game. It also was the map that was uploaded in Alpha 0.0.4 as that was when the game went public and replaced [[Neighborhood RP]]. A few buildings from the final Neighborhood RP map were added but as far off sections and were never revisited. Most of these buildings were later revamped in future versions. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] f1b5e35ef474e9dc130d8be939d8aad5dbdb2a9c Alpha 0.0.4 0 51 147 2022-10-11T15:57:33Z Vorlitix 3 Created page with "OBB Alpha 0.0.2 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB. == Development == Map improvements were made, however not many changes were made. These..." wikitext text/x-wiki OBB Alpha 0.0.2 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB. == Development == Map improvements were made, however not many changes were made. These changes include: # Fixed tools that rely on the detection of other players # Volume adjusted from 0.5 to 1 # Third person shift lock for guns # A new topbar. ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 3ff69f86eb54ba21def3dedc48fe684154c424ee 149 147 2022-10-11T16:01:45Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development == Map improvements were made, however not many changes were made. These changes include: # Fixed tools that rely on the detection of other players # Volume adjusted from 0.5 to 1 # Third person shift lock for guns # A new topbar. ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 298ee196733976d21857ea16f87779f6e694be0e 150 149 2022-10-11T16:13:31Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022. Alpha 0.0.4 was the first version with actual scripting and the beginning of the dev team. It was uploaded and rebranded on the original [[Neighborhood RP]] place as Orange Blossom Beach RP. Alpha 0.0.4 was also the first documented version of OBB. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development and Changelog == Map improvements were made, however not many changes were made. These changes include: # Fixed tools that rely on the detection of other players # Volume adjusted from 0.5 to 1 # Third person shift lock for guns # A new topbar. ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 64b306d37ebdb8f731788235d4dd330039992736 File:Alpha 004 Screenshot.png 6 52 148 2022-10-11T15:59:50Z Vorlitix 3 wikitext text/x-wiki Alpha Screenshot 5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f Alpha 0.0.5 0 53 151 2022-10-11T16:20:30Z Vorlitix 3 Created page with "OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update. == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and..." wikitext text/x-wiki OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update. == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: # Sound fixes # Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] 524d0c03bf262c8aa3c4f320908543c3f1b75371 File:OBB Alpha 005 Screenshot.png 6 54 152 2022-10-11T16:22:12Z Vorlitix 3 wikitext text/x-wiki Alpha Screenshot 5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f Alpha 0.0.5 0 53 153 151 2022-10-11T16:22:58Z Vorlitix 3 wikitext text/x-wiki [[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.]] OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update. == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: # Sound fixes # Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] c42426d6e2048fc847aca5cf340fa1a8a1d53cac 154 153 2022-10-11T16:23:31Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 EST to 10:33 EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: # Sound fixes # Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] 1ea5e6a579961a96c780e3cef5f836e66dab676f 155 154 2022-10-11T16:24:16Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: # Sound fixes # Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] ae1cf99f93280d52f5a8c85aae519ffaf717f5dc 168 155 2022-10-11T17:01:47Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: # Sound fixes # Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] 9d2d2f07ecbd39add34389b87a53d78344f31834 183 168 2022-10-11T17:14:06Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and the development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: * Sound fixes * Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] d5dd853bc933760a2580252c00828a3c924ff666 185 183 2022-10-11T17:15:05Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: * Sound fixes * Added a teleporter than teleports you to a randomized game in [[Central Red - US]] ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] 30d2bdfb8011464143bb4ad8779c39903cf5b673 195 185 2022-10-11T18:57:55Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: * Sound fixes * Added a teleporter in [[Central Red - US]] than teleports you to a randomized game ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] 4b092453bd3132dee4b69e2e79fd6d0d84c4a8b5 Alpha 0.0.1 0 48 156 142 2022-10-11T16:52:51Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. Changelog: # Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] e271109137e7cdfdae4c6f98fda464a68b740b85 160 156 2022-10-11T16:56:58Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === # Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] b7bb6d072e7a41277e9cf3fe19f8a004800a6ba7 170 160 2022-10-11T17:02:43Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]]. == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === # Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] d2cc237b7d166ce20af5188b9a541211173081bc 172 170 2022-10-11T17:03:29Z Hatmanthehat 2 Bullets. wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.2]] and [[Alpha 0.0.3]]. == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === * Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] 5a9aa64247190e2e563b7f297a432be57a647910 175 172 2022-10-11T17:06:27Z Hatmanthehat 2 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022, along with [[Alpha 0.0.2]] and [[Alpha 0.0.3]]. == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === * Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] d9288bac669a20edc75dae5163004be17572d23d 178 175 2022-10-11T17:12:43Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:16 PM, EST a few minutes before [[Alpha 0.0.2]] and a few hours before [[Alpha 0.0.3]]. == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring [[Tacoball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === * Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] 8fc3266816c3b14836c485dd59f53803e283e254 Alpha 0.0.2 0 49 157 145 2022-10-11T16:54:13Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development == Not much changed but the game becoming a pitch louder. Changelog: # Soundgroup is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] cb6fdaf86fbdfaf97b1430234e03f94aad14a4f9 159 157 2022-10-11T16:56:42Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development == Not much changed but the game becoming a pitch louder. === Changelog: === # Soundgroup is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 50ee90613b03152ed8903546547538facd4d10d7 166 159 2022-10-11T17:01:06Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === # Soundgroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 520da9ed0ddd88ea3aa62b88845deb5cdf1bdd80 171 166 2022-10-11T17:02:57Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is the second released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.3]]. == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === # Soundgroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 4daa75022f05476f8d71e859615a5e9b480f2fcc 174 171 2022-10-11T17:05:41Z Hatmanthehat 2 wikitext text/x-wiki OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022, along with [[Alpha 0.0.1]] and [[Alpha 0.0.3]]. == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === * SoundGroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 8e2aa9b6e5d9ce3f5aa4cc4c7caaab1ce269f3cf 177 174 2022-10-11T17:12:00Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]]. == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === * SoundGroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 79a0bfb79e2dfbe85e8587f5663640cde0518487 179 177 2022-10-11T17:12:58Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]]. == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === # SoundGroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] e024cdb8367823286d0af688012670d7b255ed96 180 179 2022-10-11T17:13:19Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]]. == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === * SoundGroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 0f2d94ecb2e80bccb2aa14f3fcacfa8b0abd7cb4 Alpha 0.0.3 0 50 158 144 2022-10-11T16:56:24Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development == Not much changed like before, but the third person view for guns were improved. === Changelog: === # Shift Lock was now third person for guns. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] 2130c08edc8deedc19b03767b68d71b1bb9635df 165 158 2022-10-11T17:00:33Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.4|Alpha 0.0.4.]] == Development and Changelog == Not much changed like before, but the third person view for guns were improved. === Changelog: === # Shift Lock was now third person for guns. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] 4de697212b85d9b3fdb5f7fd6c72d702db2f00ec 169 165 2022-10-11T17:02:28Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]]. == Development and Changelog == Not much changed like before, but the third person view for guns were improved. === Changelog: === # Shift Lock was now third person for guns. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] c23c2b1961f206ee4847359f7396c535cd0dc503 176 169 2022-10-11T17:08:39Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 8:34 PM EST, almost the exact same time as [[Alpha 0.0.1]] and [[Alpha 0.0.2]]. There was a short playtest of the game a few hours before the release of [[Alpha 0.0.4]] when the game was going through the process of being imported on top of [[Neighborhood RP]]. The playtest was also tested on [[Alpha 0.0.1]] and [[Alpha 0.0.2]] before Alpha 0.0.3 == Development and Changelog == Not much changed like before, but the third person view for guns were improved. === Changelog: === # Shift Lock was now third person for guns. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] 10d567a01174fbded53fd6bc8460149745244478 181 176 2022-10-11T17:13:32Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 8:34 PM EST, almost the exact same time as [[Alpha 0.0.1]] and [[Alpha 0.0.2]]. There was a short playtest of the game a few hours before the release of [[Alpha 0.0.4]] when the game was going through the process of being imported on top of [[Neighborhood RP]]. The playtest was also tested on [[Alpha 0.0.1]] and [[Alpha 0.0.2]] before Alpha 0.0.3 == Development and Changelog == Not much changed like before, but the third person view for guns were improved. === Changelog: === * Shift Lock was now third person for guns. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] 938d261d67bf4e8b7cc7647ef33e89bc40d98823 186 181 2022-10-11T17:55:35Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.3 is the third released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 8:34 PM EST, almost the exact same time as [[Alpha 0.0.1]] and [[Alpha 0.0.2]]. There was a short playtest of the game a few hours before the release of [[Alpha 0.0.4]] when the game was going through the process of being imported on top of [[Neighborhood RP]]. The playtest was also tested on [[Alpha 0.0.1]] and [[Alpha 0.0.2]] before Alpha 0.0.3 == Development and Changelog == Not much changed like before, but the third person view for guns were improved. === Changelog: === * Shift Lock is now third person for guns. ''For the previous version, see [[Alpha 0.0.2]]'' ''For the next version, see [[Alpha 0.0.4]]'' [[Category:Versions]] 2164a7ae597ad3d0efab8f203ceee5b1428f99a9 Taco Ball 0 44 161 141 2022-10-11T16:59:12Z Hatmanthehat 2 Hatmanthehat moved page [[Tacoball]] to [[Taco Ball]]: It’s the intended way to spell it wikitext text/x-wiki Tacoball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Tacoball as of 12/10/2008]] == History == Tacoball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Tacoball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Tacoball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Tacoball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Tacoball shortly after in April of 2006. Francisco has been the CEO of Tacoball since. == Menu == The menu of Tacoball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Tacoball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Tacoball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Tacoball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Tacoball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] c308937b41e58ae5a77616639a2146cc8f2e3cd4 167 161 2022-10-11T17:01:42Z Hatmanthehat 2 Renamed all Tacoballs to Taco Balls wikitext text/x-wiki Taco Ball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Taco Ball as of 12/10/2008]] == History == Taco Ball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Taco Ball in 1987 off Lake Drive in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Taco Ball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Taco Ball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Taco Ball shortly after in April of 2006. Francisco has been the CEO of Taco Ball since. == Menu == The menu of Taco Ball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Taco Ball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Taco Ball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Taco Ball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Taco Ball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] bdd3bd3ea78aa4f9f7a6e942844864bfd7edc2e0 Tacoball 0 55 162 2022-10-11T16:59:12Z Hatmanthehat 2 Hatmanthehat moved page [[Tacoball]] to [[Taco Ball]]: It’s the intended way to spell it wikitext text/x-wiki #REDIRECT [[Taco Ball]] 5575b104571c9c630c10c8ab6feee8e4cedfd775 Alpha 0.0.4 0 51 163 150 2022-10-11T16:59:34Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.3]]. Alpha 0.0.4 was the first fully documented version of OBB. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development and Changelog == Map improvements were made and a topbar was added. === Changelog: === # Topbar was added, as seen above ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 97c1d3c3ece510e950b8e84a1ad5c86b67b1997a 164 163 2022-10-11T17:00:10Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 21, 2022 at the same time with [[Alpha 0.0.1]] and [[Alpha 0.0.2]], as well as [[Alpha 0.0.3]]. Alpha 0.0.4 was the first fully documented version of OBB. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development and Changelog == Slight map improvements were made and a topbar was added. === Changelog: === # Topbar was added, as seen above ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 8ea60de72a8473f2a09913fb2cd42eee66dbfb03 173 164 2022-10-11T17:05:25Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released a few hours after the releases of [[Alpha 0.0.1]], [[Alpha 0.0.2]], and [[Alpha 0.0.3]] on March 21, 2022 at exactly 10:30 PM EST. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development and Changelog == Slight map improvements were made and a topbar was added. === Changelog: === # Topbar was added, as seen above ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 6d387af2c9f7f6f7fa28afc1143a9059130fc3d7 182 173 2022-10-11T17:13:49Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released a few hours after the releases of [[Alpha 0.0.1]], [[Alpha 0.0.2]], and [[Alpha 0.0.3]] on March 21, 2022 at exactly 10:30 PM EST. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development and Changelog == Slight map improvements were made and a topbar was added. === Changelog: === * Topbar was added, as seen above ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] 68fa046120d9aa3ef41dcfebc698ab66fefbcccf Neighborhood RP 0 47 184 146 2022-10-11T17:14:55Z Hatmanthehat 2 Talked about skripting wikitext text/x-wiki [[File:Neighborhood RP Thumbnail 10-17-2021.jpg|thumb|The 3rd Gen Neighborhood RP thumbnail.]] Neighborhood RP was the spiritual predecessor for the groundworks of [[Orange Blossom Beach (game)|Orange Blossom Beach]] and [[Alpha 0.0.1]]. The game was originally created by [https://www.roblox.com/users/86121841/profile Hattozo] on December 5, 2020 but was later re-uploaded on February 6, 2021 after an incident which made the game content deleted by the Roblox moderation team. The game was discontinued on March 30, 2022 and is now no longer playable. == Development == Neighborhood RP was worked on from December 5, 2020 to March 30, 2022. It went through several map revamps and game changes, which are both separated between 3 eras. Generation 1, 2, and 3. The game itself was originally preceded by a friends only RP game which was created around early 2019, in which that was a replacement for a series that lasted from 2016-2018 that was also a private game for friends only. === Generation 1 === Generation 1 of Neighborhood RP, which was worked on during December of 2020. It was a very flat map which was absent of any terrain whatsoever but was a still expanding map. It was originally made for a different game when dominickdoesstuff created the map and brought up the idea for said map, but it ended up being published as Neighborhood RP. All of the scripts were still the same from the previous game made in 2019, using mainly mesh tools and these tools are still prevalent as of [[Alpha 0.2.5]] of OBB such as the molotov. Later on into the maps life cycle, the map eventually began being filled up with more buildings. Due to the small but filled map design, it was considered as the best Neighborhood RP map. === Generation 2 === Generation 2 of Neighborhood RP was almost the same game, in which this generation was worked on during early 2021 and parts of mid 2021. The map was changed and instead opted for a forest based map and the same house but was heavily scrutinized and criticized because of its dull and depressing map design. The Neighborhood RP house was instead off the grid this time and there were less buildings than the previous map. It still primarily had the same tools and mentioned in generation 1, but had a few extra improvements. Much didn't change but the new depressing map and the game still mostly remained the same when it came to scripting. === Generation 3 === Generation 3 was the last and final era of Neighborhood RP. It was worked on during late 2021 after not being picked up for months. It again changed the map to a more expanded but wasteland inspired map including an abandoned town. The map was a step up from the Gen 2 map, but still felt very empty due to its larger size and basically being a tech demo for the game. However, this is where the scripting really started to pickup, which added all-new features like a spawn menu, subtle but big improvements like custom footstep noises, the Cmdr console, and so on. This era was basically the foundations for OBB as it would later be rebranded as OBB marking the beginnings of Orange Blossom Beach. ''For the next version, see OBB [[Alpha 0.0.1]]'' [[Category:Versions]] 905cc8b292c0b519390331ded7e512e8d56b84fc Alpha 0.0.6 0 56 187 2022-10-11T18:06:13Z Vorlitix 3 Created page with "OBB Alpha 0.0.6 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update. == Development and Changelog == Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge...." wikitext text/x-wiki OBB Alpha 0.0.6 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update. == Development and Changelog == Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge. === Changelog === * Super-Admin added * Notifications added * Fixed scope for the M24 Sniper Rifle to have the right FOV in first person * Global shaking caused by teleporter fixed * Minor missing audio issues fixed * Mossberg 500 and Taurus Judge added ''For the previous version, see [[Alpha 0.0.5]]'' ''For the next version, see [[Alpha 0.0.7]]'' [[Category:Versions]] 82e3d0df083790f71e7ee54e75af1cc5802e6e15 189 187 2022-10-11T18:22:03Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.6 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update. == Development and Changelog == Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge. [[File:OBBAlpha006.png|thumb|Mossberg 500]] === Changelog === * Super-Admin added * Notifications added * Fixed scope for the M24 Sniper Rifle to have the right FOV in first person * Global shaking caused by teleporter fixed * Minor missing audio issues fixed * Mossberg 500 and Taurus Judge added ''For the previous version, see [[Alpha 0.0.5]]'' ''For the next version, see [[Alpha 0.0.7]]'' [[Category:Versions]] f59e9b1dcddd7f4d7a9b15ee0a4f98cbb93f9b4b File:OBBAlpha006.png 6 57 188 2022-10-11T18:21:04Z Vorlitix 3 wikitext text/x-wiki Alpha Screenshot 5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f Alpha 0.0.0 0 58 190 2022-10-11T18:25:32Z Vorlitix 3 Created page with "<nowiki>#REDIRECT [[Neighborhood RP]]</nowiki>" wikitext text/x-wiki <nowiki>#REDIRECT [[Neighborhood RP]]</nowiki> e9fcbc1b0f0211560337879a937c6a234d65d222 191 190 2022-10-11T18:25:50Z Vorlitix 3 Redirected page to [[Neighborhood RP]] wikitext text/x-wiki #REDIRECT [[Neighborhood_RP]] 605810efecd02a37e6b35bce583b113345edc207 Alpha 0.0.7 0 59 192 2022-10-11T18:38:19Z Vorlitix 3 Created page with "OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.6 added a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed '''- Custom..." wikitext text/x-wiki OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.6 added a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed '''- Custom chat temporarily disabled''' '''+ Khols Admin added back as a secondary admin panel''' ''For the previous version, see [[Alpha 0.0.6]]'' ''For the next version, see [[Alpha 0.0.8]]'' [[Category:Versions]] 504f1b6b9f767845d4861b00bb78d216d08f8b34 193 192 2022-10-11T18:41:29Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed '''- Custom chat temporarily disabled''' '''+ Khols Admin added back as a secondary admin panel''' ''For the previous version, see [[Alpha 0.0.6]]'' ''For the next version, see [[Alpha 0.0.8]]'' [[Category:Versions]] 5a1d46bd0e29559f90c655911de493a0161b5a7a 194 193 2022-10-11T18:56:29Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.7 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed * '''Custom chat removed -''' * '''Kohls Admin temporarily added back +''' ''For the previous version, see [[Alpha 0.0.6]]'' ''For the next version, see [[Alpha 0.0.8]]'' [[Category:Versions]] 31770455ac5c87455119b8484e623a781ae58725 Alpha 0.0.8 0 60 196 2022-10-11T19:06:39Z Vorlitix 3 Created page with "OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10..." wikitext text/x-wiki OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST. '''Changelog:''' *Fly and invisible commands added *Custom chat reenabled *Kohls Admin removed again *New sprinting animation *Crouching temporarily removed *WIP player model outfitter *'''Kohls Admin added back at 10:55 AM +''' ''For the previous version, see [[Alpha 0.0.7]]'' ''For the next version, see [[Alpha 0.0.9]]'' [[Category:Versions]] 0ae84edcce55034547bc8b347f1c7b070fbd064a 197 196 2022-10-11T19:07:31Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST. '''Changelog:''' *Fly and invisible commands added *Custom chat reenabled *Kohls Admin removed again *New sprinting animation *Crouching temporarily removed *WIP player model outfitter *'''Kohls Admin added back at 10:55 AM +''' *'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -''' ''For the previous version, see [[Alpha 0.0.7]]'' ''For the next version, see [[Alpha 0.0.9]]'' [[Category:Versions]] 0a88550f030eb78698282fe3e8e29e9a2ce9aa3c 198 197 2022-10-11T19:07:55Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST. '''Changelog:''' *Fly and invisible commands added *Custom chat reenabled *Kohls Admin removed again *New sprinting animation *Crouching temporarily removed *WIP player model outfitter *'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -''' *'''Kohls Admin added back at 10:55 AM +''' ''For the previous version, see [[Alpha 0.0.7]]'' ''For the next version, see [[Alpha 0.0.9]]'' [[Category:Versions]] 3db2203447e8a1264675d3184eca2956081e0d18 200 198 2022-10-11T19:24:04Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. [[File:OBBAlpha008.png|thumb|281x281px|Early design for the outfitter.]] ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST. '''Changelog:''' *Fly and invisible commands added *Custom chat reenabled *Kohls Admin removed again *New sprinting animation *Crouching temporarily removed *WIP player model outfitter *'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -''' *'''Kohls Admin added back at 10:55 AM +''' ''For the previous version, see [[Alpha 0.0.7]]'' ''For the next version, see [[Alpha 0.0.9]]'' [[Category:Versions]] dbf41505585e4fd64cbfb8831d2ea01d54c996ca 201 200 2022-10-11T19:26:30Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.8 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 26, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. [[File:OBBAlpha008.png|thumb|281x281px|Early design for the outfitter.]] ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST. '''Changelog:''' *Fly and invisible commands added *Custom chat reenabled *Kohls Admin removed again *New sprinting animation *Crouching temporarily removed *WIP player model outfitter *'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -''' *'''Kohls Admin added back at 10:55 AM +''' ''For the previous version, see [[Alpha 0.0.7]]'' ''For the next version, see [[Alpha 0.0.9]]'' [[Category:Versions]] 40f75a2772416e1135d8ef10f1094465849d4aae File:OBBAlpha008.png 6 61 199 2022-10-11T19:22:57Z Vorlitix 3 wikitext text/x-wiki Alpha Screenshot 5b0d33f2d8291fe1b9cfe0c442dc935e3e0dbb5f Cramework 0 4 202 88 2022-10-11T22:16:01Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous information]] {{stub}} Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. == Confusions and Misunderstandings == '''Cramework is not a game engine!''' It is solely a framework used to aid the development of realism-esque games on Roblox. The actual game engine is Roblox’s own proprietary engine. fe664e8d5a19aaedafa2af2876fd2f42ba974313 Alpha 0.0.1 0 48 203 178 2022-10-11T22:20:23Z Hatmanthehat 2 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:16 PM, EST a few minutes before [[Alpha 0.0.2]] and a few hours before [[Alpha 0.0.3]]. == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring a [[Taco Ball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === * Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] b50739f5e6a154f3a829cca5376298940a17b0b5 File:Thumbnail - August 2022.png 6 62 204 2022-10-12T03:26:36Z Hatmanthehat 2 wikitext text/x-wiki Added on August 12 2022 148759fd4cf15e48b7f2b4b1e7736980bb269401 Orange Blossom Beach (game) 0 26 205 121 2022-10-12T03:27:28Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] [[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2020 (full release unknown) made by creators dominickdoesstuff and Hattozo, in which it takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== ''For more information, see [[Neighborhood RP]]'' The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} 48d8dcd3e185b4fc3f1a3b027639aec252afd769 206 205 2022-10-13T03:49:39Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] [[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features in which give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== ''For more information, see [[Neighborhood RP]]'' The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} c235fc735b9b15944e8c5982d7f68776a768e018 207 206 2022-10-13T03:51:13Z Hatmanthehat 2 wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] [[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are features that give an immersive experience into the city nonetheless. For example, you can perform shoot-outs in streets with guns that you can buy from the gun store, there are suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== ''For more information, see [[Neighborhood RP]]'' The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} fb3ea6f4ddd6e613a03b2cb80acf08684901ef53 212 207 2022-11-26T06:29:17Z Hatmanthehat 2 lets not try to be misleading wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] [[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are still features that give an immersive experience into the city. For example, you can take a view at the vast city right now. Later, you'll be able to perform shoot-outs in streets with guns that you can buy from the gun store, or buy suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in the state of Florida == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== ''For more information, see [[Neighborhood RP]]'' The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting) {{stub}} a1c3eac0c189aa8a929f6213977ebf8326bc9872 248 212 2023-03-28T19:41:53Z Vorlitix 3 POOP EVERYWHERE wikitext text/x-wiki [[Category:Miscellaneous_information]] [[Category:Lore]] [[File:Thumbnail - August 2022.png|thumb|The game's thumbnail (circa 2022)]] ''For the city of Orange Blossom Beach, see [[Orange Blossom Beach]].'' Orange Blossom Beach is a [https://en.wikipedia.org/wiki/Role-playing_video_game roleplaying game] on [https://en.wikipedia.org/wiki/Roblox Roblox] created in 2021 (full release unknown) made by creators dominickdoesstuff and Hattozo. The game takes place in the fictional city of Orange Blossom Beach, FL. It is currently in a state of being an unfinished test release, but there are still features that give an immersive experience into the city. For example, you can take a view at the vast city right now. Later, you'll be able to perform shoot-outs in streets with guns that you can buy from the gun store, or buy suburban houses that you can live in, and much more. Orange Blossom Beach is a free-to-play WIP and requires a Roblox account to play. This discusses general information about the project, summarized onto one page. == Gameplay == The main game is centered around an [https://en.wikipedia.org/wiki/Open_world open world] design that lets you do whatever you want in the game world, with many locations often meant to immerse/give the feeling of being a real city, while also serving a purpose to roleplay in those areas, creating further immersion of the game world. == Background == The main storyline takes place in 2008-2009, set in Gulf County, Florida. == History == Orange Blossom Beach has gone through several stages to become what it is today. === Pre-OBB === ==== Late 2020 - Early 2021 ==== ''For more information, see [[Neighborhood RP]]'' The game originally started as a spiritual successor to a private friends-only game made around early 2019. The idea was brought up by dominickdoesstuff to create a better version of the game as the current map was not original. Immediately after the idea, the "new" map that dominickdoesstuff had made was posted and ready to be used. This was made into a new game called Neighborhood RP, which is now supposed to be known as Orange Blossom Beach. Neighborhood RP was another friends-only game under the ownership of Hattozo, with all of the scripts deriving from its predecessor. The map was very small, had no terrain, and was actually made for a different game, ultimately to be reused. Although it was small, the amount of buildings in this map compensated for its size, which made it one of the best maps for the game before the current map today was made. The highlight of the map was a large house, which was reworked multiple times and still exists in the game to this day. In around early 2021, the map for the game changed to a forest. The large house was featured again, but this time, living off-grid. It was heavily criticized for being dull, empty and depressing compared to the previous map that had much more buildings. The game was also automatically taken down, '''almost''' getting the uploader of the game deleted. ==== Late 2021 ==== After a long time of the game not being touched, the game was finally being worked on again. This time, it would set the foundation for the rest of OBB. During this stage, it was almost destined to be a Roblox sandbox game similar to games like Garry's Mod. Many features were being introduced, such as a spawn menu, an admin system, a map loader, and a lot of the games other base features. It was still a friends-only game at this stage, though. The map was reworked for the 3rd time, featuring vast terrain and an abandoned town. Even though the map was made as a response to the criticism about the previous map involving the forest, it was still very incomplete and felt more of a tech demo according to the map creator himself. === OBB === ==== Early 2022 - ??? ==== This stage is perhaps the biggest out of all, as the entire focus of the game changed from being a friends-only sandbox to a pure roleplay city game with a small community. The entire map was painstakingly reworked to what it is today. Unlike the previous map, it was now a realistic city on a large scale instead of a small neighborhood or a forest. The map was also made to combine the best parts out of every single other map that was used in the game previously. To reflect this, the name for the game was re-chosen as "Orange Blossom Beach RP", which is very different from "Neighborhood RP" as it now implies that the game takes place on a coastline city, as opposed to taking place in a small neighborhood. Compared to the other maps made for the game, it was massive, ambitious, vast, and criticism about the previous maps were properly addressed this time. Efforts to make the game roleplay friendly were made, which involved scripting taking full-effect. == Community == The community is not fully established yet. == Credits == The rest of the credits can be found within the game itself, but the game was made by 2 creators, dominickdoesstuff (map creator) and Hattozo (scripting). {{stub}} 073ccfb2eb006252a14cb7a9af7ebc8f81775ad3 Orange Blossom Beach 0 33 208 115 2022-11-09T04:27:36Z Hatmanthehat 2 Allegedly. Yes, allegedly. wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area. c31951d446d41e57f70b44ead005a7a08e817c2e Kaleidoscopic Records 0 63 209 2022-11-09T04:28:00Z 47.185.33.228 0 Created page with "Kaleidoscopic Records is a record store located in Orange Blossom Beach. It is owned by KaleidoscopicPrism." wikitext text/x-wiki Kaleidoscopic Records is a record store located in Orange Blossom Beach. It is owned by KaleidoscopicPrism. 4ea9cda8b7b63820d1bf0158f28c20e0a2c7cb03 Prism News 0 64 210 2022-11-09T04:29:09Z 47.185.33.228 0 Created page with "Prism News is a news company owned by KaleidoscopicPrism." wikitext text/x-wiki Prism News is a news company owned by KaleidoscopicPrism. 783c5ac4c8991cfcfac320b54fd19abecabf85a0 User:Guests 2 66 213 2022-12-05T20:17:41Z Guests 13 the dogd oin wikitext text/x-wiki least deranged obb developer i build and sometimes script '''_____ _ / ____| | | | | __ _ _ ___ ___| |_ ___ | | |_ | | | |/ _ \/ __| __/ __| | |__| | |_| | __/\__ \ |_\__ \ \_____|\__,_|\___||___/\__|___/''' ead4f6b35d99e18fc3924920dc05a56e37934985 Alpha 0.0.9 0 67 214 2023-02-16T17:58:20Z Vorlitix 3 Created page with "OBB Alpha 0.0.9 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system. ==Development and Changelog== The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST. '''Changelog:''' *Roleplay names are added and implemented into the outfitter GUI *Ragdol..." wikitext text/x-wiki OBB Alpha 0.0.9 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system. ==Development and Changelog== The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST. '''Changelog:''' *Roleplay names are added and implemented into the outfitter GUI *Ragdoll introduced by pressing E + R *Profileservice datastore system introduced ''For the previous version, see [[Alpha 0.0.8]]'' ''For the next version, see [[Alpha 0.1.0]]'' [[Category:Versions]] d84fae987daa232618bb0f8ac824d6cea435c0f4 215 214 2023-02-16T18:07:03Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.9 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 27, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system. ==Development and Changelog== The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST. '''Changelog:''' *Roleplay names are added and implemented into the outfitter GUI *Ragdoll introduced by pressing E + R *Profileservice datastore system introduced ''For the previous version, see [[Alpha 0.0.8]]'' ''For the next version, see [[Alpha 0.1.0]]'' [[Category:Versions]] fd2854467f0440ea383ccaccda6fcfdaa091b147 229 215 2023-03-04T00:27:31Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.9 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 27, 2022. Alpha 0.0.9 introduced roleplay names and a functioning ragdoll system. ==Development and Changelog== The development behind Alpha 0.0.9 was fairly simple and did not take much deciding on what to add at the time. Alpha 0.0.9 was announced on 10:50 PM EST. '''Changelog:''' *Roleplay names are added and implemented into the outfitter GUI *Ragdoll introduced by pressing E + R *Profileservice datastore system introduced ''For the previous version, see [[Alpha 0.0.8]]'' ''For the next version, see [[Alpha 0.1.0]]'' [[Category:Versions]] d9b4a9bae612885e103d151d8c5c4e4d27c17b50 Alpha 0.1.0 0 68 216 2023-02-16T18:13:13Z Vorlitix 3 created this whole ass page wikitext text/x-wiki OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released. ==Development and Changelog== The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01. '''Changelog:''' *Viewable stats via pressing Shift + M *Outfitter overhaul *Presets added *Several cars added *Harvey Casino Bomb added (non-functional in the game itself) *NPCs added; npc_lego01, npc_roblox01 ''For the previous version, see [[Alpha 0.0.9]]'' ''For the next version, see [[Alpha 0.1.1]]'' [[Category:Versions]] 92640a072a51e0792a3b6842b1edfca9261dceb2 218 216 2023-02-16T18:17:23Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released. [[File:Npcs0.1.0.png|thumb|The NPCs introduced in Alpha 0.1.0]] ==Development and Changelog== The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01. '''Changelog:''' *Viewable stats via pressing Shift + M *Outfitter overhaul *Presets added *Several cars added *Harvey Casino Bomb added (non-functional in the game itself) *NPCs added; npc_lego01, npc_roblox01 ''For the previous version, see [[Alpha 0.0.9]]'' ''For the next version, see [[Alpha 0.1.1]]'' [[Category:Versions]] 9cc61f85c1ade4a78ddb56c1b0193dc25ab42518 230 218 2023-03-04T00:27:42Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.0 is a minor major to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released. [[File:Npcs0.1.0.png|thumb|The NPCs introduced in Alpha 0.1.0]] ==Development and Changelog== The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01. '''Changelog:''' *Viewable stats via pressing Shift + M *Outfitter overhaul *Presets added *Several cars added *Harvey Casino Bomb added (non-functional in the game itself) *NPCs added; npc_lego01, npc_roblox01 ''For the previous version, see [[Alpha 0.0.9]]'' ''For the next version, see [[Alpha 0.1.1]]'' [[Category:Versions]] 58760a55cc1280d2c11e04bce97ebd0eb20c302b 231 230 2023-03-04T00:27:55Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.0 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 30, 2022. Alpha 0.1.0 introduced the ability to view stats. It also introduced presets in the outfitter. The update was later expanded upon a few moments after it was released. [[File:Npcs0.1.0.png|thumb|The NPCs introduced in Alpha 0.1.0]] ==Development and Changelog== The development behind Alpha 0.1.0, like Alpha 0.0.9, wasn't very complicated. Not much was added because of "shitty motivational problems" expressed by the game creator, Hattozo. Alpha 0.1.0 was announced on 10:01 PM EST. However, later in the day, on 10:28 PM EST, it was announced that cars were added, as well as 2 new NPCs. These NPCs being npc_lego01 and npc_roblox01. '''Changelog:''' *Viewable stats via pressing Shift + M *Outfitter overhaul *Presets added *Several cars added *Harvey Casino Bomb added (non-functional in the game itself) *NPCs added; npc_lego01, npc_roblox01 ''For the previous version, see [[Alpha 0.0.9]]'' ''For the next version, see [[Alpha 0.1.1]]'' [[Category:Versions]] c7bf97013c2bf3d8c9d431495fe71d430d8b328a File:Npcs0.1.0.png 6 69 217 2023-02-16T18:17:05Z Vorlitix 3 wikitext text/x-wiki \g 59b6ccaeee64c4342b86b0d0afade68662044036 Alpha 0.1.1 0 70 219 2023-02-16T18:30:38Z Vorlitix 3 I like to drink the pulp from Orange Juice wikitext text/x-wiki OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands. ==Development and Changelog== There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST. '''Changelog:''' *More NPCs added *Storage chests; left incomplete *explode_on_walk command added ''For the previous version, see [[Alpha 0.1.0]]'' ''For the next version, see [[Alpha 0.1.2]]'' 5fc2febe7936f9d13f38509f6d53fa5bcd6d4846 220 219 2023-02-16T18:32:42Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.0 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands. ==Development and Changelog== There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST. '''Changelog:''' *More NPCs added *Storage chests; left incomplete *explode_on_walk command added ''For the previous version, see [[Alpha 0.1.0]]'' ''For the next version, see [[Alpha 0.1.2]]'' [[Category:Versions]] 12ef9fd40a5213aa716f1c4a0f8d8c7b800469ab 232 220 2023-03-04T00:28:04Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.0 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands. ==Development and Changelog== There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST. '''Changelog:''' *More NPCs added *Storage chests; left incomplete *explode_on_walk command added ''For the previous version, see [[Alpha 0.1.0]]'' ''For the next version, see [[Alpha 0.1.2]]'' [[Category:Versions]] 067dd5233a542cdacb744f9ef9fc59bb9f816a60 233 232 2023-03-04T00:28:12Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.1 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands. ==Development and Changelog== There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST. '''Changelog:''' *More NPCs added *Storage chests; left incomplete *explode_on_walk command added ''For the previous version, see [[Alpha 0.1.0]]'' ''For the next version, see [[Alpha 0.1.2]]'' [[Category:Versions]] b76bf5c4c2d46280e242f192ef25b2cf2f5040fa 244 233 2023-03-06T02:13:08Z Vorlitix 3 added image wikitext text/x-wiki OBB Alpha 0.1.1 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 1, 2022. Alpha 0.1.1 introduced little, but it did introduce one of the first "fun" (or unessential) admin commands. [[File:Storagechestui.png|thumb|The experimental storage chest UI.]] ==Development and Changelog== There isn't much about the development surrounding Alpha 0.1.1, however there were plans made to revise parts of the map. One of the things that the update did implement, the explode on walk command, was inspired by the video uploaded on the same day by [https://www.youtube.com/@vorlitix Vorlitix], titled [https://www.youtube.com/watch?v=sEqFd0JpD7I ''The Best ROBLOX Update Ever'']. Alpha 0.1.1 was announced on 10:54 PM EST. '''Changelog:''' *More NPCs added *Storage chests; left incomplete *explode_on_walk command added ''For the previous version, see [[Alpha 0.1.0]]'' ''For the next version, see [[Alpha 0.1.2]]'' [[Category:Versions]] 7fa4559c796d4ab436b1764b4d9a72e2387fdfa7 Alpha 0.1.2 0 71 221 2023-03-03T07:47:25Z Vorlitix 3 Tacos should strictly be eaten on Tuesdays wikitext text/x-wiki OBB Alpha 0.1.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 2, 2022. Alpha 0.1.2, like Alpha 0.1.1, had little to introduce. ==Development and Changelog== Alpha 0.1.2 mostly revamped a couple of features, like footstep sound effects. Due to past and recent events, a gun-free zone was put under the school inside of Orange Blossom Beach. The update was rolled out on 11:22 PM EST. '''Changelog:''' *Replaced CSGO sound effects for different footstep sound effects *Added missing footstep sound effects *E to sit on seats *New particle FX for guns *Disintegrate command *Can no longer use guns inside of the OBB school ''For the previous version, see [[Alpha 0.1.1]]'' ''For the next version, see [[Alpha 0.1.3]]'' [[Category:Versions]] 075c6782c548c66bbcb8f638703c15b022208065 234 221 2023-03-04T00:28:21Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.2 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 2, 2022. Alpha 0.1.2, like Alpha 0.1.1, had little to introduce. ==Development and Changelog== Alpha 0.1.2 mostly revamped a couple of features, like footstep sound effects. Due to past and recent events, a gun-free zone was put under the school inside of Orange Blossom Beach. The update was rolled out on 11:22 PM EST. '''Changelog:''' *Replaced CSGO sound effects for different footstep sound effects *Added missing footstep sound effects *E to sit on seats *New particle FX for guns *Disintegrate command *Can no longer use guns inside of the OBB school ''For the previous version, see [[Alpha 0.1.1]]'' ''For the next version, see [[Alpha 0.1.3]]'' [[Category:Versions]] 25cf90013234f2496089002ef77ac387544806c4 Alpha 0.1.3 0 72 222 2023-03-03T07:58:59Z Vorlitix 3 Pizza rolls are amazing wikitext text/x-wiki OBB Alpha 0.1.3 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 5, 2022. Alpha 0.1.3 introduced quite a bit, like being able to grab models properly. ==Development and Changelog== Alpha 0.1.3 too revamped sounds and adjusted things due to performance reasons. It also made it to where roleplay names are now filtered due to roleplay names not having a filter when they were originally added. '''Changelog:''' *Disabled Streaming Enabled due to performance issues *Applied knockback when shooting unanchored parts with a gun *Improved flashlight sound *Used proximityprompt to pick up tools *Able to grab models that are made up with more than 1 part *Rebinded E to H when it comes to holstering guns *RP names are now filtered *Animations are now supported when aiming a gun down in third person *Support for aiming sounds *Black transitions on the screen for when you die or reset ''For the previous version, see [[Alpha 0.1.2]]'' ''For the next version, see [[Alpha 0.1.4]]'' [[Category:Versions]] 735d8fbf9b61968a4582fdffa5c88b2eee515d87 235 222 2023-03-04T00:28:34Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.3 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 5, 2022. Alpha 0.1.3 introduced quite a bit, like being able to grab models properly. ==Development and Changelog== Alpha 0.1.3 too revamped sounds and adjusted things due to performance reasons. It also made it to where roleplay names are now filtered due to roleplay names not having a filter when they were originally added. '''Changelog:''' *Disabled Streaming Enabled due to performance issues *Applied knockback when shooting unanchored parts with a gun *Improved flashlight sound *Used proximityprompt to pick up tools *Able to grab models that are made up with more than 1 part *Rebinded E to H when it comes to holstering guns *RP names are now filtered *Animations are now supported when aiming a gun down in third person *Support for aiming sounds *Black transitions on the screen for when you die or reset ''For the previous version, see [[Alpha 0.1.2]]'' ''For the next version, see [[Alpha 0.1.4]]'' [[Category:Versions]] 1422a521b86de9ae0d5ba2cf39645b5c669b5d3c Alpha 0.0.2 0 49 223 180 2023-03-04T00:26:24Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.2 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:46 PM, EST a few minutes after [[Alpha 0.0.1]] and a few hours before [[Alpha 0.0.3]]. == Development and Changelog == Not much changed but the game becoming a pitch louder. === Changelog: === * SoundGroup's volume is now 1 and not 0.5 ''For the previous version, see [[Alpha 0.0.1]]'' ''For the next version, see [[Alpha 0.0.3]]'' [[Category:Versions]] 03dcce75a308bc4076ce77a7c81dbae340a669d9 Alpha 0.0.4 0 51 224 182 2023-03-04T00:26:41Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released a few hours after the releases of [[Alpha 0.0.1]], [[Alpha 0.0.2]], and [[Alpha 0.0.3]] on March 21, 2022 at exactly 10:30 PM EST. [[File:Alpha 004 Screenshot.png|thumb|The topbar that was added in Alpha 0.0.4]] == Development and Changelog == Slight map improvements were made and a topbar was added. === Changelog: === * Topbar was added, as seen above ''For the previous version, see [[Alpha 0.0.3]]'' ''For the next version, see [[Alpha 0.0.5]]'' [[Category:Versions]] ab58fda1f1944a2784746374a2f147973bd3606e Alpha 0.0.5 0 53 225 195 2023-03-04T00:26:52Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: * Sound fixes * Added a teleporter in [[Central Red - US]] than teleports you to a randomized game ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] c0c230727d92323cba4c3e9912016fb7124ac075 246 225 2023-03-18T01:33:57Z Hatmanthehat 2 typo wikitext text/x-wiki OBB Alpha 0.0.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 22, 2022. Alpha 0.0.5 was an early sound improvement update.[[File:OBB Alpha 005 Screenshot.png|thumb|Sunset view of the original bridge on Alpha 0.0.5's release.|197x197px]] == Development and Changelog == Alpha 0.0.5 didn't add much to OBB and development lasted from 3:37 PM EST to 10:33 PM EST on March 22, 2022. The update was a response to the audio update that was pushed by Roblox on March 17, 2022. The audio updated privated all audios made by users and made Roblox-uploaded audios public. To have had your audio not privated, it had to be under 6 seconds. Changelog: * Sound fixes * Added a teleporter in [[Central Red - US]] that teleports you to a randomized game ''For the previous version, see [[Alpha 0.0.4]]'' ''For the next version, see [[Alpha 0.0.6]]'' [[Category:Versions]] b313d862a3cc14abf3ae3e4e0a104a09e5be1691 Alpha 0.0.6 0 56 226 189 2023-03-04T00:27:05Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.6 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 23, 2022. Alpha 0.0.6 was an admin improvement and bug fix update. == Development and Changelog == Many bugs were still left in from development with Alpha 0.0.5, however remaining audio related and teleporter related issues were fixed shortly after Alpha 0.0.5 in the form of Alpha 0.0.6. Alpha 0.0.6 also introduced the Mossberg 500 and the Taurus Judge. [[File:OBBAlpha006.png|thumb|Mossberg 500]] === Changelog === * Super-Admin added * Notifications added * Fixed scope for the M24 Sniper Rifle to have the right FOV in first person * Global shaking caused by teleporter fixed * Minor missing audio issues fixed * Mossberg 500 and Taurus Judge added ''For the previous version, see [[Alpha 0.0.5]]'' ''For the next version, see [[Alpha 0.0.7]]'' [[Category:Versions]] d6789d71cdcbed1b8df3edeb9e35633276e4e6d2 Alpha 0.0.7 0 59 227 194 2023-03-04T00:27:12Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide wether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed * '''Custom chat removed -''' * '''Kohls Admin temporarily added back +''' ''For the previous version, see [[Alpha 0.0.6]]'' ''For the next version, see [[Alpha 0.0.8]]'' [[Category:Versions]] ac47a77a4fbfba70b26e977afb97054377c115c3 Alpha 0.0.8 0 60 228 201 2023-03-04T00:27:20Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.0.8 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 26, 2022. Alpha 0.0.8 added fly and invisible commands, as well as adding the new chat in full. [[File:OBBAlpha008.png|thumb|281x281px|Early design for the outfitter.]] ==Development and Changelog== The development behind Alpha 0.0.8 was a tightrope on going on and off about what admin to implement. After eventually making the fly command and a few other things, the outfitter gui was finished and Alpha 0.0.8 was announced on 10:02 PM EST. '''Changelog:''' *Fly and invisible commands added *Custom chat reenabled *Kohls Admin removed again *New sprinting animation *Crouching temporarily removed *WIP player model outfitter *'''Sprinting animation removed shortly after announcement of Alpha 0.0.8 -''' *'''Kohls Admin added back at 10:55 AM +''' ''For the previous version, see [[Alpha 0.0.7]]'' ''For the next version, see [[Alpha 0.0.9]]'' [[Category:Versions]] adbd615ec7a99be7c270e3637056f7c7ae0a1ec5 Alpha 0.1.4 0 73 236 2023-03-04T00:37:52Z Vorlitix 3 Created page with "OBB Alpha 0.1.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 9, 2022. The update focused on UI improvements and bug fixes. ==Development and Changelog== Alpha 0.1.4 had a focus on the games UI, a good example of this is that Alpha 0.1.4 updated the primary font to be Roboto Mono. It also improved the gun UI and added functioning ammo boxes. Alpha 0.1.4 was published at 4:58 PM EST. '''Changelog:''' *Updated the..." wikitext text/x-wiki OBB Alpha 0.1.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 9, 2022. The update focused on UI improvements and bug fixes. ==Development and Changelog== Alpha 0.1.4 had a focus on the games UI, a good example of this is that Alpha 0.1.4 updated the primary font to be Roboto Mono. It also improved the gun UI and added functioning ammo boxes. Alpha 0.1.4 was published at 4:58 PM EST. '''Changelog:''' *Updated the primary font to Roboto Mono *Working ammo boxes for submachine guns *Working ammo boxes for pistols *Gun UI improved *The gun UI now shows the proper name of the gun instead of it being listed as an mp5 *Blood now appears when shooting a ragdoll *Fixed bug where you would die multiple times; such as the death sound playing numerous times and the experimental death camera breaking *Fixed several issues with the prop pickup functionality ''For the previous version, see [[Alpha 0.1.3]]'' ''For the next version, see [[Alpha 0.1.5]]'' [[Category:Versions]] 51debea0c3e65ade5f22ac6346e68ff1d1f00920 237 236 2023-03-04T00:38:51Z Vorlitix 3 Fixed an issue where the for next or previous version it would combine it with the changelog list. wikitext text/x-wiki OBB Alpha 0.1.4 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 9, 2022. The update focused on UI improvements and bug fixes. ==Development and Changelog== Alpha 0.1.4 had a focus on the games UI, a good example of this is that Alpha 0.1.4 updated the primary font to be Roboto Mono. It also improved the gun UI and added functioning ammo boxes. Alpha 0.1.4 was published at 4:58 PM EST. '''Changelog:''' *Updated the primary font to Roboto Mono *Working ammo boxes for submachine guns *Working ammo boxes for pistols *Gun UI improved *The gun UI now shows the proper name of the gun instead of it being listed as an mp5 *Blood now appears when shooting a ragdoll *Fixed bug where you would die multiple times; such as the death sound playing numerous times and the experimental death camera breaking *Fixed several issues with the prop pickup functionality ''For the previous version, see [[Alpha 0.1.3]]'' ''For the next version, see [[Alpha 0.1.5]]'' [[Category:Versions]] dee54efdb79ef5e4bec73a63e2182392379aa1b1 Alpha 0.1.5 0 74 238 2023-03-04T01:08:55Z Vorlitix 3 crumbl cookie is a scam wikitext text/x-wiki OBB Alpha 0.1.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 13, 2022. Alpha 0.1.5 was central on bug fixes and patches. ==Development and Changelog== Alpha 0.1.5 was a very expansive update when it came to fixing bugs from previous updates. The update itself was also the start of the current update system of OBB where updates were larger and took longer time to produce. The update released on 8:58 PM EST. '''Changelog:''' *Added chat repositioning *Added chat whispering *Props are now able to be cleaned through the clean command *Introduced camera bobbing *Holstering a gun now unlocks the mouse *NPCs are now able to crouch *Guns no longer break if you have a cloned version of your player model in workspace *The devtest map is no longer cancollide *Maps now have descriptions when using the map command *Fixed the bug where the storage UI no longer "existed" when you died or reset *Implemented command hide_ui to hide the user interface *Certain cars no longer have a red particle effect when you shoot them *Death cam is expected to no longer break and return to your player model due to the older system using time raced coordination *Opacity of the bullet hole texture has been fixed *Reverted the ambienttype to noreverb as the Roblox reverb is faulty *Non-firing sounds from guns are now played to other players, such as the reload sound, equip sound, and other sound effects ''For the previous version, see [[Alpha 0.1.4]]'' ''For the next version, see [[Alpha 0.1.6]]'' [[Category:Versions]] b468dbccb3865c51a61048c6474f0c1564afa2ea 245 238 2023-03-06T02:14:54Z Hatmanthehat 2 wikitext text/x-wiki OBB Alpha 0.1.5 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 13, 2022. Alpha 0.1.5 was central on bug fixes and patches. ==Development and Changelog== Alpha 0.1.5 was a very expansive update when it came to fixing bugs from previous updates. The update itself was also the start of the current update system of OBB where updates were larger and took longer time to produce. The update released on 8:58 PM EST. '''Changelog:''' *Added chat repositioning *Added chat whispering *Props are now able to be cleaned through the clean command *Introduced camera bobbing *Holstering a gun now unlocks the mouse *NPCs are now able to crouch *Guns no longer break if you have a cloned version of your player model in workspace *The devtest map is no longer cancollide *Maps now have descriptions when using the map command *Fixed the bug where the storage UI no longer "existed" when you died or reset *Implemented command hide_ui to hide the user interface *Certain cars no longer have a red particle effect when you shoot them *Death cam is expected to no longer break and return to your player model due to the older system using time raced coordination *Opacity of the bullet hole texture has been fixed *Reverted the AmbientType to NoReverb as the Roblox reverb is not suitable *Non-firing sounds from guns are now played to other players, such as the reload sound, equip sound, and other sound effects ''For the previous version, see [[Alpha 0.1.4]]'' ''For the next version, see [[Alpha 0.1.6]]'' [[Category:Versions]] 7da845e71f78a081132947b14ea755bc1d17514c Alpha 0.1.6 0 75 239 2023-03-04T03:53:51Z Vorlitix 3 i like chinese food it has the perfect consistency of "spicy" and "sweet" on most occasions and really makes my day wikitext text/x-wiki OBB Alpha 0.1.6 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released April 18, 2022. The update is a continuation of the patches brought out in Alpha 0.1.5. ==Development and Changelog== Alpha 0.1.6 again focused on bug fixes and patches. This was stated in advance, as according to Hattozo, the game creator and one of the lead directors of Orange Blossom Beach, said that "0.1.6 will feature rest of the bug fixes" after the release of Alpha 0.1.5. The update itself released on 10:04 PM EST. '''Changelog:''' *Skybox has been changed to a clearer replacement *Tweaked lighting *There are now 2 different textures of the bullet hole impact texture *Tweaked the hold down animation to rotate downwards as it was causing issues beforehand *Opacity of the bullet hole texture has been fixed *Fixed whisper chat colors *Implemented the NPC npc_default_zombie *Ladder climbing sounds added *Added more body impact sounds *Gore impact sounds for when the players body gets destroyed by an explosion now correctly plays again *Ragdolling now damages the player *Upon death the tool the player currently has equipped now drops and unequips *When ragdolling, you shouldn't flail around while holding a tool *New effects for water *Moved the [[Neighborhood RP]] house directly towards the forest area located in [[Shiloh Springs]] *The Neighborhood RP house now has a basement, as well as a revamped design *Replaced a poster in the aforementioned Neighborhood RP house *Made the entrance music to [[Central Red - US|Central Red US]] quieter ''For the previous version, see [[Alpha 0.1.5]]'' ''For the next version, see [[Alpha 0.1.7]]'' [[Category:Versions]] c3ba85cf991b9caf4bb6d0a3cfba7411ec58bf2a Alpha 0.1.7 0 76 240 2023-03-06T01:51:05Z Vorlitix 3 Italian food is perfection, they make the best pastas wikitext text/x-wiki OBB Alpha 0.1.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released July 31, 2022, however the main update features were moved to Alpha 0.1.7.1 which released on the same day. The update was released after a long hiatus, in which the hiatus left Orange Blossom Beach on 0.1.6 for 3 whole months until the release of Alpha 0.1.7. Due to this period of hiatus, the update is considered as the most overdue update to the game in its history. ==Development and Changelog== Alpha 0.1.7, being slowly worked on during the hiatus, was the most fundamental update in the games current history. The update was supposed to have the entire game update to a new framework, in which this framework is known as [[Cramework]]. The update itself however, still ran without Cramework and was the last to do so. However, what the update did include was full controller support for Orange Blossom Beach and VR support as well. Alpha 0.1.7 also introduced a functioning citizen NPC that worked on a table with variables for ethnicitys, clothes, and other characteristics. However, this functionality wouldn't be improved upon and fully finished until [[Alpha 0.2.3]]. Alpha 0.1.7 released at 3:56 PM EST '''Changelog:''' *Gun system now uses UserInputService for functional controller support and VR support *Full controller support implemented, remapping all of the functions that were in place for unfinished versions of attempted controller support attempts in previous Orange Blossom Beach updates *Ragdolling is now activated when freefalling or tripping *Fixed the HE Grenade tool so it damages the player now *Added npc_citizen, which works on complete randomization through a table (however, 0.1.7's version of npc_citizen still has the full NPC function missing) *Fixed crouching getting inverted *'''Removed C to crawl for weapons as it was overwriting with the base crawl function that was in place beforehand -''' ''For the previous version, see [[Alpha 0.1.6]]'' ''For the next subversion, see [[Alpha 0.1.7.1]]'' ''For the next version, see [[Alpha 0.1.8]]'' [[Category:Versions]] b87683833ab294d45db7cca8994f2761ea981b2d 241 240 2023-03-06T01:51:46Z Vorlitix 3 wikitext text/x-wiki OBB Alpha 0.1.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, however the main update features were moved to Alpha 0.1.7.1 which released on the same day. The update was released after a long hiatus, in which the hiatus left Orange Blossom Beach on 0.1.6 for 3 whole months until the release of Alpha 0.1.7. Due to this period of hiatus, the update is considered as the most overdue update to the game in its history. ==Development and Changelog== Alpha 0.1.7, being slowly worked on during the hiatus, was the most fundamental update in the games current history. The update was supposed to have the entire game update to a new framework, in which this framework is known as [[Cramework]]. The update itself however, still ran without Cramework and was the last to do so. However, what the update did include was full controller support for Orange Blossom Beach and VR support as well. Alpha 0.1.7 also introduced a functioning citizen NPC that worked on a table with variables for ethnicitys, clothes, and other characteristics. However, this functionality wouldn't be improved upon and fully finished until [[Alpha 0.2.3]]. Alpha 0.1.7 released at 3:56 PM EST '''Changelog:''' *Gun system now uses UserInputService for functional controller support and VR support *Full controller support implemented, remapping all of the functions that were in place for unfinished versions of attempted controller support attempts in previous Orange Blossom Beach updates *Ragdolling is now activated when freefalling or tripping *Fixed the HE Grenade tool so it damages the player now *Added npc_citizen, which works on complete randomization through a table (however, 0.1.7's version of npc_citizen still has the full NPC function missing) *Fixed crouching getting inverted *'''Removed C to crawl for weapons as it was overwriting with the base crawl function that was in place beforehand -''' ''For the previous version, see [[Alpha 0.1.6]]'' ''For the next subversion, see [[Alpha 0.1.7.1]]'' ''For the next version, see [[Alpha 0.1.8]]'' [[Category:Versions]] b8213c41025596ffe4b9188faf50e577b5ebe6d7 Orange Blossom Beach Filming Studio 0 34 242 69 2023-03-06T02:09:15Z 47.185.49.51 0 f wikitext text/x-wiki [[Category:Map_locations]] The Orange Blossom Beach Filming Studio is a filming studio located near the DuDu store. Stations located within the filming studio include Prism News, WOBN, and the Hat and Key talk show. 9503801a7378f59c198b674c8d5f7f2285523f48 File:Storagechestui.png 6 77 243 2023-03-06T02:11:07Z Vorlitix 3 wikitext text/x-wiki huhihihiih 6232580dc508b607cb20357ef5fecee8e3b3b941 Template:Documentation 10 79 249 2023-03-28T20:00:49Z Vorlitix 3 Created page with "{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude>" wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Add categories to the /doc subpage --> </noinclude> 9e62b964e96c4e3d478edecbfcb3c0338ae8a276 Template:Infobox settlement 10 80 250 2023-03-28T20:01:33Z Vorlitix 3 Created page with "<includeonly>{{main other|{{#invoke:Settlement short description|main}}|}}{{Infobox | child = {{yesno|{{{embed|}}}}} | templatestyles = Infobox settlement/styles.css | bodyclass = ib-settlement vcard <!--** names, type, and transliterations ** --> | above = <div class="fn org">{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}</div> {{#if:{{{native_name|}}}|<div class="nickname ib-settlement-native" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang..." wikitext text/x-wiki <includeonly>{{main other|{{#invoke:Settlement short description|main}}|}}{{Infobox | child = {{yesno|{{{embed|}}}}} | templatestyles = Infobox settlement/styles.css | bodyclass = ib-settlement vcard <!--** names, type, and transliterations ** --> | above = <div class="fn org">{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}</div> {{#if:{{{native_name|}}}|<div class="nickname ib-settlement-native" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}{{#if:{{{other_name|}}}|<div class="nickname ib-settlement-other-name">{{{other_name}}}</div>}} | subheader = {{#if:{{{settlement_type|{{{type|}}}}}}|<div class="category">{{{settlement_type|{{{type}}}}}}</div>}} | rowclass1 = mergedtoprow ib-settlement-official | data1 = {{#if:{{{name|}}}|{{{official_name|}}}}} <!-- ***Transliteration language 1*** --> | rowclass2 = mergedtoprow | header2 = {{#if:{{{translit_lang1|}}}|{{{translit_lang1}}}&nbsp;transcription(s)}} | rowclass3 = {{#if:{{{translit_lang1_type1|}}}|mergedrow|mergedbottomrow}} | label3 = &nbsp;•&nbsp;{{{translit_lang1_type}}} | data3 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type|}}}|{{{translit_lang1_info|}}}}}}} | rowclass4 = {{#if:{{{translit_lang1_type2|}}}|mergedrow|mergedbottomrow}} | label4 = &nbsp;•&nbsp;{{{translit_lang1_type1}}} | data4 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type1|}}}|{{{translit_lang1_info1|}}}}}}} | rowclass5 = {{#if:{{{translit_lang1_type3|}}}|mergedrow|mergedbottomrow}} | label5 =&nbsp;•&nbsp;{{{translit_lang1_type2}}} | data5 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type2|}}}|{{{translit_lang1_info2|}}}}}}} | rowclass6 = {{#if:{{{translit_lang1_type4|}}}|mergedrow|mergedbottomrow}} | label6 = &nbsp;•&nbsp;{{{translit_lang1_type3}}} | data6 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type3|}}}|{{{translit_lang1_info3|}}}}}}} | rowclass7 = {{#if:{{{translit_lang1_type5|}}}|mergedrow|mergedbottomrow}} | label7 = &nbsp;•&nbsp;{{{translit_lang1_type4}}} | data7 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type4|}}}|{{{translit_lang1_info4|}}}}}}} | rowclass8 = {{#if:{{{translit_lang1_type6|}}}|mergedrow|mergedbottomrow}} | label8 = &nbsp;•&nbsp;{{{translit_lang1_type5}}} | data8 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type5|}}}|{{{translit_lang1_info5|}}}}}}} | rowclass9 = mergedbottomrow | label9 = &nbsp;•&nbsp;{{{translit_lang1_type6}}} | data9 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type6|}}}|{{{translit_lang1_info6|}}}}}}} <!-- ***Transliteration language 2*** --> | rowclass10 = mergedtoprow | header10 = {{#if:{{{translit_lang2|}}}|{{{translit_lang2}}}&nbsp;transcription(s)}} | rowclass11 = {{#if:{{{translit_lang2_type1|}}}|mergedrow|mergedbottomrow}} | label11 = &nbsp;•&nbsp;{{{translit_lang2_type}}} | data11 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type|}}}|{{{translit_lang2_info|}}}}}}} | rowclass12 = {{#if:{{{translit_lang2_type2|}}}|mergedrow|mergedbottomrow}} | label12 = &nbsp;•&nbsp;{{{translit_lang2_type1}}} | data12 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type1|}}}|{{{translit_lang2_info1|}}}}}}} | rowclass13 = {{#if:{{{translit_lang2_type3|}}}|mergedrow|mergedbottomrow}} | label13 =&nbsp;•&nbsp;{{{translit_lang2_type2}}} | data13 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type2|}}}|{{{translit_lang2_info2|}}}}}}} | rowclass14 = {{#if:{{{translit_lang2_type4|}}}|mergedrow|mergedbottomrow}} | label14 = &nbsp;•&nbsp;{{{translit_lang2_type3}}} | data14 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type3|}}}|{{{translit_lang2_info3|}}}}}}} | rowclass15 = {{#if:{{{translit_lang2_type5|}}}|mergedrow|mergedbottomrow}} | label15 = &nbsp;•&nbsp;{{{translit_lang2_type4}}} | data15 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type4|}}}|{{{translit_lang2_info4|}}}}}}} | rowclass16 = {{#if:{{{translit_lang2_type6|}}}|mergedrow|mergedbottomrow}} | label16 = &nbsp;•&nbsp;{{{translit_lang2_type5}}} | data16 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type5|}}}|{{{translit_lang2_info5|}}}}}}} | rowclass17 = mergedbottomrow | label17 = &nbsp;•&nbsp;{{{translit_lang2_type6}}} | data17 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type6|}}}|{{{translit_lang2_info6|}}}}}}} <!-- end ** names, type, and transliterations ** --> <!-- ***Skyline Image*** --> | rowclass18 = mergedtoprow | data18 = {{#if:{{{image_skyline|}}}|<!-- -->{{#invoke:InfoboxImage|InfoboxImage<!-- -->|image={{{image_skyline|}}}<!-- -->|size={{if empty|{{{image_size|}}}|{{{imagesize|}}}}}|sizedefault=250px<!-- -->|alt={{if empty|{{{image_alt|}}}|{{{alt|}}}}}<!-- -->|title={{if empty|{{{image_caption|}}}|{{{caption|}}}|{{{image_alt|}}}|{{{alt|}}}}}}}<!-- -->{{#if:{{{image_caption|}}}{{{caption|}}}|<div class="ib-settlement-caption">{{if empty|{{{image_caption|}}}|{{{caption|}}}}}</div>}} }} <!-- ***Flag, Seal, Shield and Coat of arms*** --> | rowclass19 = mergedtoprow | class19 = maptable | data19 = {{#if:{{{image_flag|}}}{{{image_seal|}}}{{{image_shield|}}}{{{image_blank_emblem|}}}{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}} |{{Infobox settlement/columns | 1 = {{#if:{{{image_flag|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_flag}}}|size={{{flag_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|125px|100x100px}}|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{flag_alt|}}}|title=Flag of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Flag|link={{{flag_link|}}}|name={{{official_name}}}}}</div>}} | 2 = {{#if:{{{image_seal|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_seal|}}}|size={{{seal_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{seal_alt|}}}|title=Official seal of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{seal_type|}}}|{{{seal_type}}}|Seal}}|link={{{seal_link|}}}|name={{{official_name}}}}}</div>}} | 3 = {{#if:{{{image_shield|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_shield|}}}||size={{{shield_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{shield_alt|}}}|title=Coat of arms of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Coat of arms|link={{{shield_link|}}}|name={{{official_name}}}}}</div>}} | 4 = {{#if:{{{image_blank_emblem|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_blank_emblem|}}}|size={{{blank_emblem_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{blank_emblem_alt|}}}|title=Official logo of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{blank_emblem_type|}}}|{{{blank_emblem_type}}}}}|link={{{blank_emblem_link|}}}|name={{{official_name}}}}}</div>}} | 5 = {{#if:{{{image_map|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=100x100px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption-link">{{{map_caption}}}</div>}}}} | 0 = {{#if:{{{pushpin_map_narrow|}}}|{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}| {{location map|{{{pushpin_map|}}} |border = infobox |alt = {{{pushpin_map_alt|}}} |caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{{map_caption}}}}}}}}} |float = center |width = {{#if:{{{pushpin_mapsize|}}}|{{{pushpin_mapsize}}}|150}} |default_width = 250 |relief= {{{pushpin_relief|}}} |AlternativeMap = {{{pushpin_image|}}} |overlay_image = {{{pushpin_overlay|}}} |coordinates = {{{coordinates|}}} |label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }} |marksize =6 |outside = {{{pushpin_outside|}}}<!-- pin is outside the map --> |position = {{{pushpin_label_position|}}} }} }} }} }} }} <!-- ***Etymology*** --> | rowclass20 = mergedtoprow | data20 = {{#if:{{{etymology|}}}|Etymology: {{{etymology}}} }} <!-- ***Nickname*** --> | rowclass21 = {{#if:{{{etymology|}}}|mergedrow|mergedtoprow}} | data21 = {{#if:{{{nickname|}}}{{{nicknames|}}}|<!-- -->{{Pluralize from text|parse_links=1|{{if empty|{{{nickname|}}}|{{{nicknames|}}}{{force plural}}}}|<!-- -->link={{{nickname_link|}}}|singular=Nickname|likely=Nickname(s)|plural=Nicknames}}:&nbsp;<!-- --><div class="ib-settlement-nickname nickname">{{if empty|{{{nickname|}}}|{{{nicknames|}}}}}</div><!-- -->{{Main other|{{Pluralize from text|parse_links=1|{{{nickname|}}}|<!-- -->likely=[[Category:Pages using infobox settlement with possible nickname list]]}}}}}} <!-- ***Motto*** --> | rowclass22 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}|mergedrow|mergedtoprow}} | data22 = {{#if:{{{motto|}}}{{{mottoes|}}}|<!-- -->{{Pluralize from text|{{if empty|{{{motto|}}}|{{{mottoes|}}}{{force plural}}}}|<!-- -->link={{{motto_link|}}}|singular=Motto|likely=Motto(s)|plural=Mottoes}}:&nbsp;<!-- --><div class="ib-settlement-nickname nickname">{{if empty|{{{motto|}}}|{{{mottoes|}}}}}</div><!-- -->{{Main other|{{Pluralize from text|{{{motto|}}}|<!-- -->likely=[[Category:Pages using infobox settlement with possible motto list]]}}}}}} <!-- ***Anthem*** --> | rowclass23 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}{{{motto|}}}{{{mottoes|}}}|mergedrow|mergedtoprow}} | data23 = {{#if:{{{anthem|}}}|{{#if:{{{anthem_link|}}}|[[{{{anthem_link|}}}|Anthem:]]|Anthem:}} {{{anthem}}}}} <!-- ***Map*** --> | rowclass24 = mergedtoprow | data24 = {{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}||{{#if:{{{image_map|}}} |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=250px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption">{{{map_caption}}}</div>}} }}}} | rowclass25 = mergedrow | data25 = {{#if:{{{image_map1|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map1}}}|size={{{mapsize1|}}}|sizedefault=250px|alt={{{map_alt1|}}}|title={{{map_caption1|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption1|}}}|<div class="ib-settlement-caption">{{{map_caption1}}}</div>}} }} <!-- ***Pushpin Map*** --> | rowclass26 = mergedtoprow | data26 = {{#if:{{{pushpin_map_narrow|}}}||{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}| {{location map|{{{pushpin_map|}}} |border = infobox |alt = {{{pushpin_map_alt|}}} |caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{#if:{{{image_map|}}}||{{{map_caption}}}}}}}}}}} |float = center |width = {{{pushpin_mapsize|}}} |default_width = 250 |relief= {{{pushpin_relief|}}} |AlternativeMap = {{{pushpin_image|}}} |overlay_image = {{{pushpin_overlay|}}} |coordinates = {{{coordinates|}}} |label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }} |marksize =6 |outside = {{{pushpin_outside|}}}<!-- pin is outside the map --> |position = {{{pushpin_label_position|}}} }} }} }} <!-- ***Coordinates*** --> | rowclass27 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|{{#if:{{{grid_position|}}}|mergedrow|mergedbottomrow}}}} | data27 = {{#if:{{{coordinates|}}} |Coordinates{{#if:{{{coor_pinpoint|{{{coor_type|}}}}}}|&#32;({{{coor_pinpoint|{{{coor_type|}}}}}})}}: {{#invoke:ISO 3166|geocoordinsert|nocat=true|1={{{coordinates|}}}|country={{{subdivision_name|}}}|subdivision1={{{subdivision_name1|}}}|subdivision2={{{subdivision_name2|}}}|subdivision3={{{subdivision_name3|}}}|type=city{{#if:{{{population_total|}}}|{{#iferror:{{#expr:{{formatnum:{{{population_total}}}|R}}+1}}||({{formatnum:{{replace|{{{population_total}}}|,|}}|R}})}}}} }}{{{coordinates_footnotes|}}} }} | rowclass28 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|mergedbottomrow|mergedrow}} | label28 = {{if empty|{{{grid_name|}}}|Grid&nbsp;position}} | data28 = {{{grid_position|}}} <!-- ***Subdivisions*** --> | rowclass29 = mergedtoprow | label29 = {{{subdivision_type}}} | data29 = {{#if:{{{subdivision_type|}}}|{{{subdivision_name|}}} }} | rowclass30 = mergedrow | label30 = {{{subdivision_type1}}} | data30 = {{#if:{{{subdivision_type1|}}}|{{{subdivision_name1|}}} }} | rowclass31 = mergedrow | label31 = {{{subdivision_type2}}} | data31 = {{#if:{{{subdivision_type2|}}}|{{{subdivision_name2|}}} }} | rowclass32 = mergedrow | label32 = {{{subdivision_type3}}} | data32 = {{#if:{{{subdivision_type3|}}}|{{{subdivision_name3|}}} }} | rowclass33 = mergedrow | label33 = {{{subdivision_type4}}} | data33 = {{#if:{{{subdivision_type4|}}}|{{{subdivision_name4|}}} }} | rowclass34 = mergedrow | label34 = {{{subdivision_type5}}} | data34 = {{#if:{{{subdivision_type5|}}}|{{{subdivision_name5|}}} }} | rowclass35 = mergedrow | label35 = {{{subdivision_type6}}} | data35 = {{#if:{{{subdivision_type6|}}}|{{{subdivision_name6|}}} }} <!--***Established*** --> | rowclass36 = mergedtoprow | label36 = {{{established_title}}} | data36 = {{#if:{{{established_title|}}}|{{{established_date|}}} }} | rowclass37 = mergedrow | label37 = {{{established_title1}}} | data37 = {{#if:{{{established_title1|}}}|{{{established_date1|}}} }} | rowclass38 = mergedrow | label38 = {{{established_title2}}} | data38 = {{#if:{{{established_title2|}}}|{{{established_date2|}}} }} | rowclass39 = mergedrow | label39 = {{{established_title3}}} | data39 = {{#if:{{{established_title3|}}}|{{{established_date3|}}} }} | rowclass40 = mergedrow | label40 = {{{established_title4}}} | data40 = {{#if:{{{established_title4|}}}|{{{established_date4|}}} }} | rowclass41 = mergedrow | label41 = {{{established_title5}}} | data41 = {{#if:{{{established_title5|}}}|{{{established_date5|}}} }} | rowclass42 = mergedrow | label42 = {{{established_title6}}} | data42 = {{#if:{{{established_title6|}}}|{{{established_date6|}}} }} | rowclass43 = mergedrow | label43 = {{{established_title7}}} | data43 = {{#if:{{{established_title7|}}}|{{{established_date7|}}} }} | rowclass44 = mergedrow | label44 = {{{extinct_title}}} | data44 = {{#if:{{{extinct_title|}}}|{{{extinct_date|}}} }} | rowclass45 = mergedrow | label45 = Founded by | data45 = {{{founder|}}} | rowclass46 = mergedrow | label46 = [[Namesake|Named for]] | data46 = {{{named_for|}}} <!-- ***Seat of government and subdivisions within the settlement*** --> | rowclass47 = mergedtoprow | label47 = {{#if:{{{seat_type|}}}|{{{seat_type}}}|Seat}} | data47 = {{{seat|}}} | rowclass48 = mergedrow | label48 = {{#if:{{{seat1_type|}}}|{{{seat1_type}}}|Former seat}} | data48 = {{{seat1|}}} | rowclass49 = mergedrow | label49 = {{#if:{{{seat2_type|}}}|{{{seat2_type}}}|Former seat}} | data49 = {{{seat2|}}} | rowclass51 = {{#if:{{{seat|}}}{{{seat1|}}}{{{seat2|}}}|mergedrow|mergedtoprow}} | label51 = {{#if:{{{parts_type|}}}|{{{parts_type}}}|Boroughs}} | data51 = {{#if:{{{parts|}}}{{{p1|}}} |{{#ifeq:{{{parts_style|}}}|para |<b>{{{parts|}}}{{#if:{{both|{{{parts|}}}|{{{p1|}}}}}|&#58;&nbsp;|}}</b>{{comma separated entries|{{{p1|}}}|{{{p2|}}}|{{{p3|}}}|{{{p4|}}}|{{{p5|}}}|{{{p6|}}}|{{{p7|}}}|{{{p8|}}}|{{{p9|}}}|{{{p10|}}}|{{{p11|}}}|{{{p12|}}}|{{{p13|}}}|{{{p14|}}}|{{{p15|}}}|{{{p16|}}}|{{{p17|}}}|{{{p18|}}}|{{{p19|}}}|{{{p20|}}}|{{{p21|}}}|{{{p22|}}}|{{{p23|}}}|{{{p24|}}}|{{{p25|}}}|{{{p26|}}}|{{{p27|}}}|{{{p28|}}}|{{{p29|}}}|{{{p30|}}}|{{{p31|}}}|{{{p32|}}}|{{{p33|}}}|{{{p34|}}}|{{{p35|}}}|{{{p36|}}}|{{{p37|}}}|{{{p38|}}}|{{{p39|}}}|{{{p40|}}}|{{{p41|}}}|{{{p42|}}}|{{{p43|}}}|{{{p44|}}}|{{{p45|}}}|{{{p46|}}}|{{{p47|}}}|{{{p48|}}}|{{{p49|}}}|{{{p50|}}}}} |{{#if:{{{p1|}}}|{{Collapsible list|title={{{parts|}}}|expand={{#switch:{{{parts_style|}}}|coll=|list=y|{{#if:{{{p6|}}}||y}}}}|1={{{p1|}}}|2={{{p2|}}}|3={{{p3|}}}|4={{{p4|}}}|5={{{p5|}}}|6={{{p6|}}}|7={{{p7|}}}|8={{{p8|}}}|9={{{p9|}}}|10={{{p10|}}}|11={{{p11|}}}|12={{{p12|}}}|13={{{p13|}}}|14={{{p14|}}}|15={{{p15|}}}|16={{{p16|}}}|17={{{p17|}}}|18={{{p18|}}}|19={{{p19|}}}|20={{{p20|}}}|21={{{p21|}}}|22={{{p22|}}}|23={{{p23|}}}|24={{{p24|}}}|25={{{p25|}}}|26={{{p26|}}}|27={{{p27|}}}|28={{{p28|}}}|29={{{p29|}}}|30={{{p30|}}}|31={{{p31|}}}|32={{{p32|}}}|33={{{p33|}}}|34={{{p34|}}}|35={{{p35|}}}|36={{{p36|}}}|37={{{p37|}}}|38={{{p38|}}}|39={{{p39|}}}|40={{{p40|}}}|41={{{p41|}}}|42={{{p42|}}}|43={{{p43|}}}|44={{{p44|}}}|45={{{p45|}}}|46={{{p46|}}}|47={{{p47|}}}|48={{{p48|}}}|49={{{p49|}}}|50={{{p50|}}}}} |{{{parts}}} }} }} }} <!-- ***Government type and Leader*** --> | rowclass52 = mergedtoprow | header52 = {{#if:{{{government_type|}}}{{{governing_body|}}}{{{leader_name|}}}{{{leader_name1|}}}{{{leader_name2|}}}{{{leader_name3|}}}{{{leader_name4|}}}|Government<div class="ib-settlement-fn">{{{government_footnotes|}}}</div>}} <!-- ***Government*** --> | rowclass53 = mergedrow | label53 = &nbsp;•&nbsp;Type | data53 = {{{government_type|}}} | rowclass54 = mergedrow | label54 = &nbsp;•&nbsp;Body | class54 = agent | data54 = {{{governing_body|}}} | rowclass55 = mergedrow | label55 = &nbsp;•&nbsp;{{{leader_title}}} | data55 = {{#if:{{{leader_title|}}}|{{{leader_name|}}} {{#if:{{{leader_party|}}}|({{Polparty|{{{subdivision_name}}}|{{{leader_party}}}}})}}}} | rowclass56 = mergedrow | label56 = &nbsp;•&nbsp;{{{leader_title1}}} | data56 = {{#if:{{{leader_title1|}}}|{{{leader_name1|}}}}} | rowclass57 = mergedrow | label57 = &nbsp;•&nbsp;{{{leader_title2}}} | data57 = {{#if:{{{leader_title2|}}}|{{{leader_name2|}}}}} | rowclass58 = mergedrow | label58 = &nbsp;•&nbsp;{{{leader_title3}}} | data58 = {{#if:{{{leader_title3|}}}|{{{leader_name3|}}}}} | rowclass59 = mergedrow | label59 = &nbsp;•&nbsp;{{{leader_title4}}} | data59 = {{#if:{{{leader_title4|}}}|{{{leader_name4|}}}}} | rowclass60 = mergedrow | label60 = {{{government_blank1_title}}} | data60 = {{#if:{{{government_blank1|}}}|{{{government_blank1|}}}}} | rowclass61 = mergedrow | label61 = {{{government_blank2_title}}} | data61 = {{#if:{{{government_blank2|}}}|{{{government_blank2|}}}}} | rowclass62 = mergedrow | label62 = {{{government_blank3_title}}} | data62 = {{#if:{{{government_blank3|}}}|{{{government_blank3|}}}}} | rowclass63 = mergedrow | label63 = {{{government_blank4_title}}} | data63 = {{#if:{{{government_blank4|}}}|{{{government_blank4|}}}}} | rowclass64 = mergedrow | label64 = {{{government_blank5_title}}} | data64 = {{#if:{{{government_blank5|}}}|{{{government_blank5|}}}}} | rowclass65 = mergedrow | label65 = {{{government_blank6_title}}} | data65 = {{#if:{{{government_blank6|}}}|{{{government_blank6|}}}}} <!-- ***Geographical characteristics*** --> <!-- ***Area*** --> | rowclass66 = mergedtoprow | header66 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_rural_sq_mi|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_km2|}}}{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_metro_sq_mi|}}}{{{area_blank1_sq_mi|}}} |{{#if:{{both|{{#ifeq:{{{total_type}}}|&nbsp;|1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}} |<!-- displayed below --> |Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div> }} }} | rowclass67 = {{#if:{{both|{{#ifeq:{{{total_type}}}|&nbsp;|1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}|mergedtoprow|mergedrow}} | label67 = {{#if:{{both|{{#ifeq:{{{total_type}}}|&nbsp;|1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}} |Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div> |&nbsp;•&nbsp;{{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}} }} | data67 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_total_km2|}}} |ha ={{{area_total_ha|}}} |acre ={{{area_total_acre|}}} |sqmi ={{{area_total_sq_mi|}}} |dunam={{{area_total_dunam|}}} |link ={{#switch:{{{dunam_link|}}}||on|total=on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass68 = mergedrow | label68 = &nbsp;•&nbsp;Land | data68 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_land_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_land_km2|}}} |ha ={{{area_land_ha|}}} |acre ={{{area_land_acre|}}} |sqmi ={{{area_land_sq_mi|}}} |dunam={{{area_land_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|land|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass69 = mergedrow | label69 = &nbsp;•&nbsp;Water | data69 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_water_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_water_km2|}}} |ha ={{{area_water_ha|}}} |acre ={{{area_water_acre|}}} |sqmi ={{{area_water_sq_mi|}}} |dunam={{{area_water_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|water|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }} {{#if:{{{area_water_percent|}}}| &nbsp;{{{area_water_percent}}}%}}}} | rowclass70 = mergedrow | label70 = &nbsp;•&nbsp;Urban<div class="ib-settlement-fn">{{{area_urban_footnotes|}}}</div> | data70 = {{#if:{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_urban_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_urban_km2|}}} |ha ={{{area_urban_ha|}}} |acre ={{{area_urban_acre|}}} |sqmi ={{{area_urban_sq_mi|}}} |dunam={{{area_urban_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|urban|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass71 = mergedrow | label71 = &nbsp;•&nbsp;Rural<div class="ib-settlement-fn">{{{area_rural_footnotes|}}}</div> | data71 = {{#if:{{{area_rural_km2|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_sq_mi|}}}{{{area_rural_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_rural_km2|}}} |ha ={{{area_rural_ha|}}} |acre ={{{area_rural_acre|}}} |sqmi ={{{area_rural_sq_mi|}}} |dunam={{{area_rural_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|rural|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass72 = mergedrow | label72 =&nbsp;•&nbsp;Metro<div class="ib-settlement-fn">{{{area_metro_footnotes|}}}</div> | data72 = {{#if:{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_metro_sq_mi|}}}{{{area_metro_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_metro_km2|}}} |ha ={{{area_metro_ha|}}} |acre ={{{area_metro_acre|}}} |sqmi ={{{area_metro_sq_mi|}}} |dunam={{{area_metro_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|metro|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} <!-- ***Area rank*** --> | rowclass73 = mergedrow | label73 = &nbsp;•&nbsp;Rank | data73 = {{{area_rank|}}} | rowclass74 = mergedrow | label74 = &nbsp;•&nbsp;{{{area_blank1_title}}} | data74 = {{#if:{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_blank1_sq_mi|}}}{{{area_blank1_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_blank1_km2|}}} |ha ={{{area_blank1_ha|}}} |acre ={{{area_blank1_acre|}}} |sqmi ={{{area_blank1_sq_mi|}}} |dunam={{{area_blank1_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|blank1|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass75 = mergedrow | label75 = &nbsp;•&nbsp;{{{area_blank2_title}}} | data75 = {{#if:{{{area_blank2_km2|}}}{{{area_blank2_ha|}}}{{{area_blank2_acre|}}}{{{area_blank2_sq_mi|}}}{{{area_blank2_dunam|}}} |{{infobox_settlement/areadisp |km2 ={{{area_blank2_km2|}}} |ha ={{{area_blank2_ha|}}} |acre ={{{area_blank2_acre|}}} |sqmi ={{{area_blank2_sq_mi|}}} |dunam={{{area_blank2_dunam|}}} |link ={{#ifeq:{{{dunam_link|}}}|blank2|on}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass76 = mergedrow | label76 = &nbsp; | data76 = {{{area_note|}}} <!-- ***Dimensions*** --> | rowclass77 = mergedtoprow | header77 = {{#if:{{{length_km|}}}{{{length_mi|}}}{{{width_km|}}}{{{width_mi|}}}|Dimensions<div class="ib-settlement-fn">{{{dimensions_footnotes|}}}</div>}} | rowclass78 = mergedrow | label78 = &nbsp;•&nbsp;Length | data78 = {{#if:{{{length_km|}}}{{{length_mi|}}} | {{infobox_settlement/lengthdisp |km ={{{length_km|}}} |mi ={{{length_mi|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} | rowclass79 = mergedrow | label79 = &nbsp;•&nbsp;Width | data79 = {{#if:{{{width_km|}}}{{{width_mi|}}} |{{infobox_settlement/lengthdisp |km ={{{width_km|}}} |mi ={{{width_mi|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} <!-- ***Elevation*** --> | rowclass80 = mergedtoprow | label80 = {{#if:{{{elevation_link|}}}|[[{{{elevation_link|}}}|Elevation]]|Elevation}}<div class="ib-settlement-fn">{{{elevation_footnotes|}}}{{#if:{{{elevation_point|}}}|&#32;({{{elevation_point}}})}}</div> | data80 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}} |{{infobox_settlement/lengthdisp |m ={{{elevation_m|}}} |ft ={{{elevation_ft|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} | rowclass81 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}}|mergedrow|mergedtoprow}} | label81 = Highest&nbsp;elevation<div class="ib-settlement-fn">{{{elevation_max_footnotes|}}}{{#if:{{{elevation_max_point|}}}|&#32;({{{elevation_max_point}}})}}</div> | data81 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}} |{{infobox_settlement/lengthdisp |m ={{{elevation_max_m|}}} |ft ={{{elevation_max_ft|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} <!-- ***Elevation max rank*** --> | rowclass82 = mergedrow | label82 = &nbsp;•&nbsp;Rank | data82 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}}| {{{elevation_max_rank|}}} }} | rowclass83 = {{#if:{{{elevation_min_rank|}}}|mergedrow|mergedbottomrow}} | label83 = Lowest&nbsp;elevation<div class="ib-settlement-fn">{{{elevation_min_footnotes|}}}{{#if:{{{elevation_min_point|}}}|&#32;({{{elevation_min_point}}})}}</div> | data83 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}} |{{infobox_settlement/lengthdisp |m ={{{elevation_min_m|}}} |ft ={{{elevation_min_ft|}}} |pref={{{unit_pref}}} |name={{{subdivision_name}}} }} }} <!-- ***Elevation min rank*** --> | rowclass84 = mergedrow | label84 = &nbsp;•&nbsp;Rank | data84 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}}|{{{elevation_min_rank|}}}}} <!-- ***Population*** --> | rowclass85 = mergedtoprow | label85 = Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div> | data85 = {{fix comma category|{{#if:{{{population|}}} | {{formatnum:{{replace|{{{population}}}|,|}}}} | {{#ifeq:{{{total_type}}}|&nbsp; | {{#if:{{{population_total|}}} | {{formatnum:{{replace|{{{population_total}}}|,|}}}} }} }} }}}} | rowclass86 = mergedtoprow | header86 = {{#if:{{{population|}}} | |{{#ifeq:{{{total_type}}}|&nbsp; | |{{#if:{{{population_total|}}}{{{population_urban|}}}{{{population_rural|}}}{{{population_metro|}}}{{{population_blank1|}}}{{{population_blank2|}}}{{{population_est|}}} |Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div> }} }} }} | rowclass87 = mergedrow | label87 = &nbsp;•&nbsp;{{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}} | data87 = {{#if:{{{population|}}} | |{{#ifeq:{{{total_type}}}|&nbsp; | |{{#if:{{{population_total|}}} | {{fix comma category|{{formatnum:{{replace|{{{population_total}}}|,|}}}}}} }} }} }} | rowclass88 = mergedrow | label88 = &nbsp;•&nbsp;Estimate&nbsp;<div class="ib-settlement-fn">({{{pop_est_as_of}}}){{{pop_est_footnotes|}}}</div> | data88 = {{#if:{{{population_est|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_est}}}|,|}}}}}} }} <!-- ***Population rank*** --> | rowclass89 = mergedrow | label89 =&nbsp;•&nbsp;Rank | data89 = {{{population_rank|}}} | rowclass90 = mergedrow | label90 = &nbsp;•&nbsp;Density | data90 = {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}{{{population_total|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_km2|}}} |/sqmi={{{population_density_sq_mi|}}} |pop ={{{population_total|}}} |dunam={{{area_total_dunam|}}} |ha ={{{area_total_ha|}}} |km2 ={{{area_total_km2|}}} |acre ={{{area_total_acre|}}} |sqmi ={{{area_total_sq_mi|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} <!-- ***Population density rank*** --> | rowclass91 = mergedrow | label91 = &nbsp;&nbsp;•&nbsp;Rank | data91 = {{{population_density_rank|}}} | rowclass92 = mergedrow | label92 = &nbsp;•&nbsp;[[Urban area|Urban]]<div class="ib-settlement-fn">{{{population_urban_footnotes|}}}</div> | data92 = {{#if:{{{population_urban|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_urban}}}|,|}}}}}} }} | rowclass93 = mergedrow | label93 = &nbsp;•&nbsp;Urban&nbsp;density | data93 = {{#if:{{{population_density_urban_km2|}}}{{{population_density_urban_sq_mi|}}}{{{population_urban|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_urban_km2|}}} |/sqmi={{{population_density_urban_sq_mi|}}} |pop ={{{population_urban|}}} |ha ={{{area_urban_ha|}}} |km2 ={{{area_urban_km2|}}} |acre ={{{area_urban_acre|}}} |sqmi ={{{area_urban_sq_mi|}}} |dunam={{{area_urban_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass94 = mergedrow | label94 = &nbsp;•&nbsp;[[Rural area|Rural]]<div class="ib-settlement-fn">{{{population_rural_footnotes|}}}</div> | data94 = {{#if:{{{population_rural|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_rural}}}|,|}}}}}}}} | rowclass95 = mergedrow | label95 = &nbsp;•&nbsp;Rural&nbsp;density | data95 = {{#if:{{{population_density_rural_km2|}}}{{{population_density_rural_sq_mi|}}}{{{population_rural|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_rural_km2|}}} |/sqmi={{{population_density_rural_sq_mi|}}} |pop ={{{population_rural|}}} |ha ={{{area_rural_ha|}}} |km2 ={{{area_rural_km2|}}} |acre ={{{area_rural_acre|}}} |sqmi ={{{area_rural_sq_mi|}}} |dunam={{{area_rural_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass96 = mergedrow | label96 =&nbsp;•&nbsp;[[Metropolitan area|Metro]]<div class="ib-settlement-fn">{{{population_metro_footnotes|}}}</div> | data96 = {{#if:{{{population_metro|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_metro}}}|,|}}}}}} }} | rowclass97 = mergedrow | label97 = &nbsp;•&nbsp;Metro&nbsp;density | data97 = {{#if:{{{population_density_metro_km2|}}}{{{population_density_metro_sq_mi|}}}{{{population_metro|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_metro_km2|}}} |/sqmi={{{population_density_metro_sq_mi|}}} |pop ={{{population_metro|}}} |ha ={{{area_metro_ha|}}} |km2 ={{{area_metro_km2|}}} |acre ={{{area_metro_acre|}}} |sqmi ={{{area_metro_sq_mi|}}} |dunam={{{area_metro_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass98 = mergedrow | label98 = &nbsp;•&nbsp;{{{population_blank1_title|}}}<div class="ib-settlement-fn">{{{population_blank1_footnotes|}}}</div> | data98 = {{#if:{{{population_blank1|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank1}}}|,|}}}}}}}} | rowclass99 = mergedrow | label99 = &nbsp;•&nbsp;{{#if:{{{population_blank1_title|}}}|{{{population_blank1_title}}} density|Density}} | data99 = {{#if:{{{population_density_blank1_km2|}}}{{{population_density_blank1_sq_mi|}}}{{{population_blank1|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_blank1_km2|}}} |/sqmi={{{population_density_blank1_sq_mi|}}} |pop ={{{population_blank1|}}} |ha ={{{area_blank1_ha|}}} |km2 ={{{area_blank1_km2|}}} |acre ={{{area_blank1_acre|}}} |sqmi ={{{area_blank1_sq_mi|}}} |dunam={{{area_blank1_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass100 = mergedrow | label100 = &nbsp;•&nbsp;{{{population_blank2_title|}}}<div class="ib-settlement-fn">{{{population_blank2_footnotes|}}}</div> | data100 = {{#if:{{{population_blank2|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank2}}}|,|}}}}}}}} | rowclass101 = mergedrow | label101 = &nbsp;•&nbsp;{{#if:{{{population_blank2_title|}}}|{{{population_blank2_title}}} density|Density}} | data101 = {{#if:{{{population_density_blank2_km2|}}}{{{population_density_blank2_sq_mi|}}}{{{population_blank2|}}} |{{infobox_settlement/densdisp |/km2 ={{{population_density_blank2_km2|}}} |/sqmi={{{population_density_blank2_sq_mi|}}} |pop ={{{population_blank2|}}} |ha ={{{area_blank2_ha|}}} |km2 ={{{area_blank2_km2|}}} |acre ={{{area_blank2_acre|}}} |sqmi ={{{area_blank2_sq_mi|}}} |dunam={{{area_blank2_dunam|}}} |pref ={{{unit_pref}}} |name ={{{subdivision_name}}} }}}} | rowclass102 = mergedrow | label102 = &nbsp; | data102 = {{{population_note|}}} | rowclass103 = mergedtoprow | label103 = {{Pluralize from text|{{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}{{force plural}}}}|<!-- -->link=Demonym|singular=Demonym|likely=Demonym(s)|plural=Demonyms}} | data103 = {{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}}}{{Main other|{{Pluralize from text|{{{population_demonym|}}}|likely=[[Category:Pages using infobox settlement with possible demonym list]]}}}} <!-- ***Demographics 1*** --> | rowclass104 = mergedtoprow | header104 = {{#if:{{{demographics_type1|}}} |{{{demographics_type1}}}<div class="ib-settlement-fn">{{{demographics1_footnotes|}}}</div>}} | rowclass105 = mergedrow | label105 = &nbsp;•&nbsp;{{{demographics1_title1}}} | data105 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title1|}}}|{{{demographics1_info1|}}}}}}} | rowclass106 = mergedrow | label106 = &nbsp;•&nbsp;{{{demographics1_title2}}} | data106 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title2|}}}|{{{demographics1_info2|}}}}}}} | rowclass107 = mergedrow | label107 = &nbsp;•&nbsp;{{{demographics1_title3}}} | data107 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title3|}}}|{{{demographics1_info3|}}}}}}} | rowclass108 = mergedrow | label108 = &nbsp;•&nbsp;{{{demographics1_title4}}} | data108 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title4|}}}|{{{demographics1_info4|}}}}}}} | rowclass109 = mergedrow | label109 = &nbsp;•&nbsp;{{{demographics1_title5}}} | data109 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title5|}}}|{{{demographics1_info5|}}}}}}} | rowclass110 = mergedrow | label110 = &nbsp;•&nbsp;{{{demographics1_title6}}} | data110 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title6|}}}|{{{demographics1_info6|}}}}}}} | rowclass111 = mergedrow | label111 = &nbsp;•&nbsp;{{{demographics1_title7}}} | data111 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title7|}}}|{{{demographics1_info7|}}}}}}} | rowclass112 = mergedrow | label112 = &nbsp;•&nbsp;{{{demographics1_title8}}} | data112 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title8|}}}|{{{demographics1_info8|}}}}}}} | rowclass113 = mergedrow | label113 = &nbsp;•&nbsp;{{{demographics1_title9}}} | data113 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title9|}}}|{{{demographics1_info9|}}}}}}} | rowclass114 = mergedrow | label114 = &nbsp;•&nbsp;{{{demographics1_title10}}} | data114 = {{#if:{{{demographics_type1|}}} |{{#if:{{{demographics1_title10|}}}|{{{demographics1_info10|}}}}}}} <!-- ***Demographics 2*** --> | rowclass115 = mergedtoprow | header115 = {{#if:{{{demographics_type2|}}} |{{{demographics_type2}}}<div class="ib-settlement-fn">{{{demographics2_footnotes|}}}</div>}} | rowclass116 = mergedrow | label116 = &nbsp;•&nbsp;{{{demographics2_title1}}} | data116 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title1|}}}|{{{demographics2_info1|}}}}}}} | rowclass117 = mergedrow | label117 = &nbsp;•&nbsp;{{{demographics2_title2}}} | data117 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title2|}}}|{{{demographics2_info2|}}}}}}} | rowclass118 = mergedrow | label118 = &nbsp;•&nbsp;{{{demographics2_title3}}} | data118 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title3|}}}|{{{demographics2_info3|}}}}}}} | rowclass119 = mergedrow | label119 = &nbsp;•&nbsp;{{{demographics2_title4}}} | data119 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title4|}}}|{{{demographics2_info4|}}}}}}} | rowclass120 = mergedrow | label120 = &nbsp;•&nbsp;{{{demographics2_title5}}} | data120 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title5|}}}|{{{demographics2_info5|}}}}}}} | rowclass121 = mergedrow | label121 = &nbsp;•&nbsp;{{{demographics2_title6}}} | data121 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title6|}}}|{{{demographics2_info6|}}}}}}} | rowclass122 = mergedrow | label122 = &nbsp;•&nbsp;{{{demographics2_title7}}} | data122 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title7|}}}|{{{demographics2_info7|}}}}}}} | rowclass123 = mergedrow | label123 = &nbsp;•&nbsp;{{{demographics2_title8}}} | data123 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title8|}}}|{{{demographics2_info8|}}}}}}} | rowclass124 = mergedrow | label124 = &nbsp;•&nbsp;{{{demographics2_title9}}} | data124 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title9|}}}|{{{demographics2_info9|}}}}}}} | rowclass125 = mergedrow | label125 = &nbsp;•&nbsp;{{{demographics2_title10}}} | data125 = {{#if:{{{demographics_type2|}}} |{{#if:{{{demographics2_title10|}}}|{{{demographics2_info10|}}}}}}} <!-- ***Time Zones*** --> | rowclass126 = mergedtoprow | header126 = {{#if:{{{timezone1_location|}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}|}} | rowclass127 = {{#if:{{{timezone1_location|}}}|mergedrow|mergedtoprow}} | label127 = {{#if:{{{timezone1_location|}}}|{{{timezone1_location}}}|{{#if:{{{timezone2_location|}}}|{{{timezone2_location}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}}}}} | data127 = {{#if:{{{utc_offset1|{{{utc_offset|}}} }}} |[[UTC{{{utc_offset1|{{{utc_offset}}}}}}]] {{#if:{{{timezone1|{{{timezone|}}}}}}|({{{timezone1|{{{timezone}}}}}})}} |{{{timezone1|{{{timezone|}}}}}} }} | rowclass128 = mergedrow | label128 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data128 = {{#if:{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}} |[[UTC{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}}]] {{#if:{{{timezone1_DST|{{{timezone_DST|}}}}}}|({{{timezone1_DST|{{{timezone_DST}}}}}})}} |{{{timezone1_DST|{{{timezone_DST|}}}}}} }} | rowclass129 = mergedrow | label129 = {{#if:{{{timezone2_location|}}}| {{{timezone2_location|}}}|<nowiki />}} | data129 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset2|{{{utc_offset2|}}} }}} |[[UTC{{{utc_offset2|{{{utc_offset2}}}}}}]] {{#if:{{{timezone2|}}}|({{{timezone2}}})}} |{{{timezone2|}}} }} }} | rowclass130 = mergedrow | label130 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data130 = {{#if:{{{utc_offset2_DST|}}}|[[UTC{{{utc_offset2_DST|}}}]] {{#if:{{{timezone2_DST|}}}|({{{timezone2_DST|}}})}} |{{{timezone2_DST|}}} }} | rowclass131 = mergedrow | label131 = {{#if:{{{timezone3_location|}}}| {{{timezone3_location|}}}|<nowiki />}} | data131 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset3|{{{utc_offset3|}}} }}} |[[UTC{{{utc_offset3|{{{utc_offset3}}}}}}]] {{#if:{{{timezone3|}}}|({{{timezone3}}})}} |{{{timezone3|}}} }} }} | rowclass132 = mergedrow | label132 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data132 = {{#if:{{{utc_offset3_DST|}}}|[[UTC{{{utc_offset3_DST|}}}]] {{#if:{{{timezone3_DST|}}}|({{{timezone3_DST|}}})}} |{{{timezone3_DST|}}} }} | rowclass133 = mergedrow | label133 = {{#if:{{{timezone4_location|}}}| {{{timezone4_location|}}}|<nowiki />}} | data133 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset4|{{{utc_offset4|}}} }}} |[[UTC{{{utc_offset4|{{{utc_offset4}}}}}}]] {{#if:{{{timezone4|}}}|({{{timezone4}}})}} |{{{timezone4|}}} }} }} | rowclass134 = mergedrow | label134 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data134 = {{#if:{{{utc_offset4_DST|}}}|[[UTC{{{utc_offset4_DST|}}}]] {{#if:{{{timezone4_DST|}}}|({{{timezone4_DST|}}})}} |{{{timezone4_DST|}}} }} | rowclass135 = mergedrow | label135 = {{#if:{{{timezone5_location|}}}| {{{timezone5_location|}}}|<nowiki />}} | data135 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}} |{{#if:{{{utc_offset5|{{{utc_offset5|}}} }}} |[[UTC{{{utc_offset5|{{{utc_offset5}}}}}}]] {{#if:{{{timezone5|}}}|({{{timezone5}}})}} |{{{timezone5|}}} }} }} | rowclass136 = mergedrow | label136 = <span class="nowrap">&nbsp;•&nbsp;Summer ([[Daylight saving time|DST]])</span> | data136 = {{#if:{{{utc_offset5_DST|}}}|[[UTC{{{utc_offset5_DST|}}}]] {{#if:{{{timezone5_DST|}}}|({{{timezone5_DST|}}})}} |{{{timezone5_DST|}}} }} <!-- ***Postal Code(s)*** --> | rowclass137 = mergedtoprow | label137 = {{{postal_code_type}}} | class137 = adr | data137 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|<div class="postal-code">{{{postal_code}}}</div>}}}} | rowclass138 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}|mergedbottomrow|mergedtoprow}} | label138 = {{{postal2_code_type}}} | class138 = adr | data138 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|<div class="postal-code">{{{postal2_code}}}</div>}} }} }} <!-- ***Area Code(s)*** --> | rowclass139 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}|mergedrow|mergedtoprow}} | label139 = {{if empty|{{{area_code_type|}}}|{{Pluralize from text|any_comma=1|parse_links=1|{{if empty|{{{area_code|}}}|{{{area_codes|}}}{{force plural}}}}|<!-- -->link=Telephone numbering plan|singular=Area code|likely=Area code(s)|plural=Area codes}}}} | data139 = {{if empty|{{{area_code|}}}|{{{area_codes|}}}}}{{#if:{{{area_code_type|}}}||{{Main other|{{Pluralize from text|any_comma=1|parse_links=1|{{{area_code|}}}|||[[Category:Pages using infobox settlement with possible area code list]]}}}}}} <!-- Geocode--> | rowclass140 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}|mergedrow|mergedtoprow}} | label140 = [[Geocode]] | class140 = nickname | data140 = {{{geocode|}}} <!-- ISO Code--> | rowclass141 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}|mergedrow|mergedtoprow}} | label141 = [[ISO 3166|ISO 3166 code]] | class141 = nickname | data141 = {{{iso_code|}}} <!-- Vehicle registration plate--> | rowclass142 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|mergedrow|mergedtoprow}} | label142 = {{#if:{{{registration_plate_type|}}}|{{{registration_plate_type}}}|[[Vehicle registration plate|Vehicle registration]]}} | data142 = {{{registration_plate|}}} <!-- Other codes --> | rowclass143 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|mergedrow|mergedtoprow}} | label143 = {{{code1_name|}}} | class143 = nickname | data143 = {{#if:{{{code1_name|}}}|{{{code1_info|}}}}} | rowclass144 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|{{{code1_name|}}}|mergedrow|mergedtoprow}} | label144 = {{{code2_name|}}} | class144 = nickname | data144 = {{#if:{{{code2_name|}}}|{{{code2_info|}}}}} <!-- ***Blank Fields (two sections)*** --> | rowclass145 = mergedtoprow | label145 = {{{blank_name_sec1|{{{blank_name|}}}}}} | data145 = {{#if:{{{blank_name_sec1|{{{blank_name|}}}}}}|{{{blank_info_sec1|{{{blank_info|}}}}}}}} | rowclass146 = mergedrow | label146 = {{{blank1_name_sec1|{{{blank1_name|}}}}}} | data146 = {{#if:{{{blank1_name_sec1|{{{blank1_name|}}}}}}|{{{blank1_info_sec1|{{{blank1_info|}}}}}}}} | rowclass147 = mergedrow | label147 = {{{blank2_name_sec1|{{{blank2_name|}}}}}} | data147 = {{#if:{{{blank2_name_sec1|{{{blank2_name|}}}}}}|{{{blank2_info_sec1|{{{blank2_info|}}}}}}}} | rowclass148 = mergedrow | label148 = {{{blank3_name_sec1|{{{blank3_name|}}}}}} | data148 = {{#if:{{{blank3_name_sec1|{{{blank3_name|}}}}}}|{{{blank3_info_sec1|{{{blank3_info|}}}}}}}} | rowclass149 = mergedrow | label149 = {{{blank4_name_sec1|{{{blank4_name|}}}}}} | data149 = {{#if:{{{blank4_name_sec1|{{{blank4_name|}}}}}}|{{{blank4_info_sec1|{{{blank4_info|}}}}}}}} | rowclass150 = mergedrow | label150 = {{{blank5_name_sec1|{{{blank5_name|}}}}}} | data150 = {{#if:{{{blank5_name_sec1|{{{blank5_name|}}}}}}|{{{blank5_info_sec1|{{{blank5_info|}}}}}}}} | rowclass151 = mergedrow | label151 = {{{blank6_name_sec1|{{{blank6_name|}}}}}} | data151 = {{#if:{{{blank6_name_sec1|{{{blank6_name|}}}}}}|{{{blank6_info_sec1|{{{blank6_info|}}}}}}}} | rowclass152 = mergedrow | label152 = {{{blank7_name_sec1|{{{blank7_name|}}}}}} | data152 = {{#if:{{{blank7_name_sec1|{{{blank7_name|}}}}}}|{{{blank7_info_sec1|{{{blank7_info|}}}}}}}} | rowclass153 = mergedtoprow | label153 = {{{blank_name_sec2}}} | data153 = {{#if:{{{blank_name_sec2|}}}|{{{blank_info_sec2|}}}}} | rowclass154 = mergedrow | label154 = {{{blank1_name_sec2}}} | data154 = {{#if:{{{blank1_name_sec2|}}}|{{{blank1_info_sec2|}}}}} | rowclass155 = mergedrow | label155 = {{{blank2_name_sec2}}} | data155 = {{#if:{{{blank2_name_sec2|}}}|{{{blank2_info_sec2|}}}}} | rowclass156 = mergedrow | label156 = {{{blank3_name_sec2}}} | data156 = {{#if:{{{blank3_name_sec2|}}}|{{{blank3_info_sec2|}}}}} | rowclass157 = mergedrow | label157 = {{{blank4_name_sec2}}} | data157 = {{#if:{{{blank4_name_sec2|}}}|{{{blank4_info_sec2|}}}}} | rowclass158 = mergedrow | label158 = {{{blank5_name_sec2}}} | data158 = {{#if:{{{blank5_name_sec2|}}}|{{{blank5_info_sec2|}}}}} | rowclass159 = mergedrow | label159 = {{{blank6_name_sec2}}} | data159 = {{#if:{{{blank6_name_sec2|}}}|{{{blank6_info_sec2|}}}}} | rowclass160 = mergedrow | label160 = {{{blank7_name_sec2}}} | data160 = {{#if:{{{blank7_name_sec2|}}}|{{{blank7_info_sec2|}}}}} <!-- ***Website*** --> | rowclass161 = mergedtoprow | label161 = Website | data161 = {{#if:{{{website|}}}|{{{website}}}}} | class162 = maptable | data162 = {{#if:{{{module|}}}|{{{module}}}}} <!-- ***Footnotes*** --> | belowrowclass = mergedtoprow | below = {{{footnotes|}}} }}<!-- Check for unknowns -->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox settlement with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox settlement]] with unknown parameter "_VALUE_"|ignoreblank=y | alt | anthem | anthem_link | area_blank1_acre | area_blank1_dunam | area_blank1_ha | area_blank1_km2 | area_blank1_sq_mi | area_blank1_title | area_blank2_acre | area_blank2_dunam | area_blank2_ha | area_blank2_km2 | area_blank2_sq_mi | area_blank2_title | area_code | area_code_type | area_codes | area_footnotes | area_land_acre | area_land_dunam | area_land_ha | area_land_km2 | area_land_sq_mi | area_metro_acre | area_metro_dunam | area_metro_footnotes | area_metro_ha | area_metro_km2 | area_metro_sq_mi | area_note | area_rank | area_rural_acre | area_rural_dunam | area_rural_footnotes | area_rural_ha | area_rural_km2 | area_rural_sq_mi | area_total_acre | area_total_dunam | area_total_ha | area_total_km2 | area_total_sq_mi | area_urban_acre | area_urban_dunam | area_urban_footnotes | area_urban_ha | area_urban_km2 | area_urban_sq_mi | area_water_acre | area_water_dunam | area_water_ha | area_water_km2 | area_water_percent | area_water_sq_mi | blank_emblem_alt | blank_emblem_link | blank_emblem_size | blank_emblem_type | blank_info | blank_info_sec1 | blank_info_sec2 | blank_name | blank_name_sec1 | blank_name_sec2 | blank1_info | blank1_info_sec1 | blank1_info_sec2 | blank1_name | blank1_name_sec1 | blank1_name_sec2 | blank2_info | blank2_info_sec1 | blank2_info_sec2 | blank2_name | blank2_name_sec1 | blank2_name_sec2 | blank3_info | blank3_info_sec1 | blank3_info_sec2 | blank3_name | blank3_name_sec1 | blank3_name_sec2 | blank4_info | blank4_info_sec1 | blank4_info_sec2 | blank4_name | blank4_name_sec1 | blank4_name_sec2 | blank5_info | blank5_info_sec1 | blank5_info_sec2 | blank5_name | blank5_name_sec1 | blank5_name_sec2 | blank6_info | blank6_info_sec1 | blank6_info_sec2 | blank6_name | blank6_name_sec1 | blank6_name_sec2 | blank7_info | blank7_info_sec1 | blank7_info_sec2 | blank7_name | blank7_name_sec1 | blank7_name_sec2 | caption | code1_info | code1_name | code2_info | code2_name | coor_pinpoint | coor_type | coordinates | coordinates_footnotes | demographics_type1 | demographics_type2 | demographics1_footnotes | demographics1_info1 | demographics1_info10 | demographics1_info2 | demographics1_info3 | demographics1_info4 | demographics1_info5 | demographics1_info6 | demographics1_info7 | demographics1_info8 | demographics1_info9 | demographics1_title1 | demographics1_title10 | demographics1_title2 | demographics1_title3 | demographics1_title4 | demographics1_title5 | demographics1_title6 | demographics1_title7 | demographics1_title8 | demographics1_title9 | demographics2_footnotes | demographics2_info1 | demographics2_info10 | demographics2_info2 | demographics2_info3 | demographics2_info4 | demographics2_info5 | demographics2_info6 | demographics2_info7 | demographics2_info8 | demographics2_info9 | demographics2_title1 | demographics2_title10 | demographics2_title2 | demographics2_title3 | demographics2_title4 | demographics2_title5 | demographics2_title6 | demographics2_title7 | demographics2_title8 | demographics2_title9 | dimensions_footnotes | dunam_link | elevation_footnotes | elevation_ft | elevation_link | elevation_m | elevation_max_footnotes | elevation_max_ft | elevation_max_m | elevation_max_point | elevation_max_rank | elevation_min_footnotes | elevation_min_ft | elevation_min_m | elevation_min_point | elevation_min_rank | elevation_point | embed | established_date | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_title | established_title1 | established_title2 | established_title3 | established_title4 | established_title5 | established_title6 | established_title7 | etymology | extinct_date | extinct_title | flag_alt | flag_border | flag_link | flag_size | footnotes | founder | geocode | governing_body | government_footnotes | government_type | government_blank1_title | government_blank1 | government_blank2_title | government_blank2 | government_blank2_title | government_blank3 | government_blank3_title | government_blank3 | government_blank4_title | government_blank4 | government_blank5_title | government_blank5 | government_blank6_title | government_blank6 | grid_name | grid_position | image_alt | image_blank_emblem | image_caption | image_flag | image_map | image_map1 | image_seal | image_shield | image_size | image_skyline | imagesize | iso_code | leader_name | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_party | leader_title | leader_title1 | leader_title2 | leader_title3 | leader_title4 | length_km | length_mi | map_alt | map_alt1 | map_caption | map_caption1 | mapsize | mapsize1 | module | motto | motto_link | mottoes | name | named_for | native_name | native_name_lang | nickname | nickname_link | nicknames | official_name | other_name | p1 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p2 | p20 | p21 | p22 | p23 | p24 | p25 | p26 | p27 | p28 | p29 | p3 | p30 | p31 | p32 | p33 | p34 | p35 | p36 | p37 | p38 | p39 | p4 | p40 | p41 | p42 | p43 | p44 | p45 | p46 | p47 | p48 | p49 | p5 | p50 | p6 | p7 | p8 | p9 | parts | parts_style | parts_type | pop_est_as_of | pop_est_footnotes | population | population_as_of | population_blank1 | population_blank1_footnotes | population_blank1_title | population_blank2 | population_blank2_footnotes | population_blank2_title | population_demonym | population_demonyms | population_density_blank1_km2 | population_density_blank1_sq_mi | population_density_blank2_km2 | population_density_blank2_sq_mi | population_density_km2 | population_density_metro_km2 | population_density_metro_sq_mi | population_density_rank | population_density_rural_km2 | population_density_rural_sq_mi | population_density_sq_mi | population_density_urban_km2 | population_density_urban_sq_mi | population_est | population_footnotes | population_metro | population_metro_footnotes | population_note | population_rank | population_rural | population_rural_footnotes | population_total | population_urban | population_urban_footnotes | postal_code | postal_code_type | postal2_code | postal2_code_type | pushpin_image | pushpin_label | pushpin_label_position | pushpin_map | pushpin_map_alt | pushpin_map_caption | pushpin_map_caption_notsmall | pushpin_map_narrow | pushpin_mapsize | pushpin_outside | pushpin_overlay | pushpin_relief | registration_plate | registration_plate_type | seal_alt | seal_link | seal_size | seal_type | seat | seat_type | seat1 | seat1_type | seat2 | seat2_type | settlement_type | shield_alt | shield_link | shield_size | short_description | subdivision_name | subdivision_name1 | subdivision_name2 | subdivision_name3 | subdivision_name4 | subdivision_name5 | subdivision_name6 | subdivision_type | subdivision_type1 | subdivision_type2 | subdivision_type3 | subdivision_type4 | subdivision_type5 | subdivision_type6 | timezone | timezone_DST | timezone_link | timezone1 | timezone1_DST | timezone1_location | timezone2 | timezone2_DST | timezone2_location | timezone3 | timezone3_DST | timezone3_location | timezone4 | timezone4_DST | timezone4_location | timezone5 | timezone5_DST | timezone5_location | total_type | translit_lang1 | translit_lang1_info | translit_lang1_info1 | translit_lang1_info2 | translit_lang1_info3 | translit_lang1_info4 | translit_lang1_info5 | translit_lang1_info6 | translit_lang1_type | translit_lang1_type1 | translit_lang1_type2 | translit_lang1_type3 | translit_lang1_type4 | translit_lang1_type5 | translit_lang1_type6 | translit_lang2 | translit_lang2_info | translit_lang2_info1 | translit_lang2_info2 | translit_lang2_info3 | translit_lang2_info4 | translit_lang2_info5 | translit_lang2_info6 | translit_lang2_type | translit_lang2_type1 | translit_lang2_type2 | translit_lang2_type3 | translit_lang2_type4 | translit_lang2_type5 | translit_lang2_type6 | type | unit_pref | utc_offset | utc_offset_DST | utc_offset1 | utc_offset1_DST | utc_offset2 | utc_offset2_DST | utc_offset3 | utc_offset3_DST | utc_offset4 | utc_offset4_DST | utc_offset5 | utc_offset5_DST | website | width_km | width_mi }}<!-- -->{{#invoke:Check for clobbered parameters|check | template = Infobox settlement | cat = {{main other|Category:Pages using infobox settlement with conflicting parameters}} | population; population_total | image_size; imagesize | image_alt; alt | image_caption; caption }}<!-- Wikidata -->{{#if:{{{coordinates_wikidata|}}}{{{wikidata|}}} |[[Category:Pages using infobox settlement with the wikidata parameter]] }}{{main other|<!-- Missing country -->{{#if:{{{subdivision_name|}}}||[[Category:Pages using infobox settlement with missing country]]}}<!-- No map -->{{#if:{{{pushpin_map|}}}{{{image_map|}}}{{{image_map1|}}}||[[Category:Pages using infobox settlement with no map]]}}<!-- Image_map1 without image_map -->{{#if:{{{image_map1|}}}|{{#if:{{{image_map|}}}||[[Category:Pages using infobox settlement with image_map1 but not image_map]]}}}}<!-- No coordinates -->{{#if:{{{coordinates|}}}||[[Category:Pages using infobox settlement with no coordinates]]}}<!-- -->{{#if:{{{type|}}}|{{#ifeq:{{{settlement_type|a}}}|{{{settlement_type|b}}}|[[Category:Pages using infobox settlement with ignored type]]|}}|}}<!-- Ignored type parameter -->{{#if:{{{embed|}}}|[[Category:Pages using infobox settlement with embed]]}} }}</includeonly><noinclude> {{documentation}} <!--Please add this template's categories to the /doc subpage, not here - thanks!--> </noinclude> f339513d69d55a6f0620634b28bdc875664aec26 Template:Infobox settlement/styles.css 10 81 251 2023-03-28T20:05:25Z Vorlitix 3 Created page with "/* {{pp-template}} */ .ib-settlement { width: 23em; border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-settlement td, .ib-settlement th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-settlement .mergedtoprow .infobox-full-data, .ib-settlement .mergedtoprow .infobox-header, .ib-settlement .mergedtoprow .infobox-data, .ib-settlement .mergedtoprow .infobox-..." sanitized-css text/css /* {{pp-template}} */ .ib-settlement { width: 23em; border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-settlement td, .ib-settlement th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-settlement .mergedtoprow .infobox-full-data, .ib-settlement .mergedtoprow .infobox-header, .ib-settlement .mergedtoprow .infobox-data, .ib-settlement .mergedtoprow .infobox-label, .ib-settlement .mergedtoprow .infobox-below { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .ib-settlement .mergedrow .infobox-full-data, .ib-settlement .mergedrow .infobox-data, .ib-settlement .mergedrow .infobox-label { border: 0; padding: 0 0.6em 0.2em 0.6em; } .ib-settlement .mergedbottomrow .infobox-full-data, .ib-settlement .mergedbottomrow .infobox-data, .ib-settlement .mergedbottomrow .infobox-label { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .ib-settlement .maptable { border: 0; padding: 0; } .ib-settlement .infobox-header, .ib-settlement .infobox-below { text-align: left; } .ib-settlement .infobox-above { font-size: 125%; line-height: 1.3em; } .ib-settlement .infobox-subheader { background-color: #cddeff; font-weight: bold; } .ib-settlement-native { font-weight: normal; padding-top: 0.2em; } .ib-settlement-other-name { font-size: 78%; } .ib-settlement-official { font-weight: bold; } .ib-settlement-caption { padding: 0.3em 0 0 0; } .ib-settlement-caption-link { padding: 0.2em 0; } .ib-settlement-nickname { display: inline; } .ib-settlement-fn { font-weight: normal; display: inline; } 1711e86939ccd5e11f3f0cab3522df9f8e06bc1d Module:Settlement short description 828 82 252 2023-03-28T20:11:47Z Vorlitix 3 Created page with "--generates auto short description for use in infobox settlement local p = {} p.categories = "" local plain = require('Module:Plain text')._main local getArgs = require('Module:Arguments').getArgs local tableTools = require ('Module:TableTools') function p.reverseTable (init) init[1], init[3] = init[3], init[1] return init end function p.assign (args, argname, num) local val local var = {} for i = 0,num do --handle initial "subdivision_foo" without number if i..." Scribunto text/plain --generates auto short description for use in infobox settlement local p = {} p.categories = "" local plain = require('Module:Plain text')._main local getArgs = require('Module:Arguments').getArgs local tableTools = require ('Module:TableTools') function p.reverseTable (init) init[1], init[3] = init[3], init[1] return init end function p.assign (args, argname, num) local val local var = {} for i = 0,num do --handle initial "subdivision_foo" without number if i == 0 then val = "" else val = tostring(i) end var[i+1] = p.validate(plain(args[argname..val])) end return var end --Display short description using {{short description}} function p.shortdesc(text, frame) return frame:expandTemplate{title = 'Short description', args = {text, 'noreplace'}} end function p.category (cattype) local category = string.format('[[Category:Pages using infobox settlement with bad %s]]', cattype) if category then p.categories = p.categories..category end --categorize end --sanity and other checks function p.validate (parameter, cat) if not parameter then return nil end parameter = parameter:gsub('%b()', '') --remove things in brackets as extraneous information :gsub('%s+', ' ') --fix possible extra spaces from previous cleanup :gsub('^%s+', '') --trim spaces from beginning :gsub('%s+$', '') --trim spaces from end if parameter:match("[,;]") or not parameter:match("%a") then --must have some letters, ignore if multiple types/subdivisions if cat then p.category (cat) end return nil end if (parameter == "") then return nil end return parameter end --removes redundancy like "England, United Kingdom" and fixes issues like "Foo in United States" (to "Foo in the United States") --also used in Module:Type in location function p.cleanupLoc (location) if location == "" then return nil end local replacements = { ["England, United Kingdom"] = "England", ["Scotland, United Kingdom"] = "Scotland", ["Wales, United Kingdom"] = "Wales", ["New York City, New York, United States"] = "New York City", ["^United States$"] = "the United States", ["London, United Kingdom"] = "London, England" } for i, v in pairs(replacements) do location = location:gsub(i, v) --series of replacements end return location end function p.main(frame) local categories = "" local subdivision_types = {} local subdivision_names = {} local args = getArgs (frame, {parentOnly = true}) local settlement_type = p.validate(plain(args.settlement_type or args.type), "settlement type") or "Place" local short_description = plain(args.short_description) subdivision_types = p.assign(args, "subdivision_type", 2) subdivision_names = p.assign(args, "subdivision_name", 2) if short_description then if (short_description == 'no') then return else local language = mw.language.getContentLanguage() return p.shortdesc(language:ucfirst(short_description), frame) end end if not(subdivision_names[3] and (string.find(settlement_type, '[nN]eighbo[u]?rhood') or string.find(settlement_type, '[sS]uburb'))) then subdivision_names[3] = nil --display the third subdivision_type only if suburb or neighborhood end --if say "Voivodeship" is found within the subdivision_type, then specially handle --by adding Voivodeship to the end if not already present for x, y in ipairs (subdivision_types) do local special_types = { "Voivodeship" } for i, j in ipairs(special_types) do if subdivision_names[x] and string.find(y, j, 1, true) and not string.find(subdivision_names[x], j, 1, true) then subdivision_names[x] = subdivision_names[x].." "..j end end end for x, y in ipairs (subdivision_names) do if y then if string.find(settlement_type, y, 1, true) then --if the subdivision is found within the settlement type subdivision_names[x] = nil --don't display redundancy p.category ("settlement type") end if y == mw.title.getCurrentTitle().text then --if the title is the same as one of the subdivision_names subdivision_names[x] = nil --don't display redundancy end end end local location = table.concat(tableTools.compressSparseArray(p.reverseTable(subdivision_names)), ', ') location = p.cleanupLoc (location) if location then location = " in " .. location else location = "" end local language = mw.language.getContentLanguage() return p.shortdesc(language:ucfirst(settlement_type..location), frame)..p.categories end return p f2f1adada5fd2b30e158e56b9f05102571b2a17f Module:Infobox 828 83 253 2023-03-28T20:12:38Z Vorlitix 3 Created page with "local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s'..." Scribunto text/plain local p = {} local args = {} local origArgs = {} local root local empty_row_categories = {} local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]' local has_rows = false local lists = { plainlist_t = { patterns = { '^plainlist$', '%splainlist$', '^plainlist%s', '%splainlist%s' }, found = false, styles = 'Plainlist/styles.css' }, hlist_t = { patterns = { '^hlist$', '%shlist$', '^hlist%s', '%shlist%s' }, found = false, styles = 'Hlist/styles.css' } } local function has_list_class(args_to_check) for _, list in pairs(lists) do if not list.found then for _, arg in pairs(args_to_check) do for _, pattern in ipairs(list.patterns) do if mw.ustring.find(arg or '', pattern) then list.found = true break end end if list.found then break end end end end end local function fixChildBoxes(sval, tt) local function notempty( s ) return s and s:match( '%S' ) end if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval -- start moving templatestyles and categories inside of table rows local slast = '' while slast ~= s do slast = s s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1') end -- end moving templatestyles and categories inside of table rows s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- [[Special:Diff/849054481]] -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end -- Cleans empty tables local function cleanInfobox() root = tostring(root) if has_rows == false then root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '') end end -- Returns the union of the values of two tables, as a sequence. local function union(t1, t2) local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local function getArgNums(prefix) local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. local function addRow(rowArgs) if rowArgs.header and rowArgs.header ~= '_BLANK_' then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass }) root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :tag('th') :attr('colspan', '2') :addClass('infobox-header') :addClass(rowArgs.class) :addClass(args.headerclass) -- @deprecated next; target .infobox-<name> .infobox-header :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext( '[[Category:Pages using infobox templates with ignored data cells]]' ) end elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ rowArgs.rowclass, rowArgs.class }) local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) if rowArgs.label then row :tag('th') :attr('scope', 'row') :addClass('infobox-label') -- @deprecated next; target .infobox-<name> .infobox-label :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') dataCell :attr('colspan', not rowArgs.label and '2' or nil) :addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data') :addClass(rowArgs.class) -- @deprecated next; target .infobox-<name> .infobox(-full)-data :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) else table.insert(empty_row_categories, rowArgs.data or '') end end local function renderTitle() if not args.title then return end has_rows = true has_list_class({args.titleclass}) root :tag('caption') :addClass('infobox-title') :addClass(args.titleclass) -- @deprecated next; target .infobox-<name> .infobox-title :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end has_rows = true has_list_class({ args.aboveclass }) root :tag('tr') :tag('th') :attr('colspan', '2') :addClass('infobox-above') :addClass(args.aboveclass) -- @deprecated next; target .infobox-<name> .infobox-above :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end has_rows = true has_list_class({ args.belowclass }) root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-below') :addClass(args.belowclass) -- @deprecated next; target .infobox-<name> .infobox-below :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function addSubheaderRow(subheaderArgs) if subheaderArgs.data and subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ subheaderArgs.rowclass, subheaderArgs.class }) local row = root:tag('tr') row:addClass(subheaderArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-subheader') :addClass(subheaderArgs.class) :cssText(subheaderArgs.datastyle) :cssText(subheaderArgs.rowcellstyle) :wikitext(fixChildBoxes(subheaderArgs.data, 'td')) else table.insert(empty_row_categories, subheaderArgs.data or '') end end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addSubheaderRow({ data = args['subheader' .. tostring(num)], -- @deprecated next; target .infobox-<name> .infobox-subheader datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function addImageRow(imageArgs) if imageArgs.data and imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then has_rows = true has_list_class({ imageArgs.rowclass, imageArgs.class }) local row = root:tag('tr') row:addClass(imageArgs.rowclass) local dataCell = row:tag('td') dataCell :attr('colspan', '2') :addClass('infobox-image') :addClass(imageArgs.class) :cssText(imageArgs.datastyle) :wikitext(fixChildBoxes(imageArgs.data, 'td')) else table.insert(empty_row_categories, imageArgs.data or '') end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :addClass('infobox-caption') -- @deprecated next; target .infobox-<name> .infobox-caption :cssText(args.captionstyle) :wikitext(caption) end addImageRow({ data = tostring(data), -- @deprecated next; target .infobox-<name> .infobox-image datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end -- When autoheaders are turned on, preprocesses the rows local function preprocessRows() if not args.autoheaders then return end local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub( category_in_empty_row_pattern, '' ):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub(category_in_empty_row_pattern, ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end -- Gets the union of the header and data argument numbers, -- and renders them all in order local function renderRows() local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], -- @deprecated next; target .infobox-<name> rowclass rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end has_rows = true root :tag('tr') :tag('td') :attr('colspan', '2') :addClass('infobox-navbar') :wikitext(require('Module:Navbar')._navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(require('Module:Italic title')._main({})) end end -- Categories in otherwise empty rows are collected in empty_row_categories. -- This function adds them to the module output. It is not affected by -- args.decat because this module should not prevent module-external categories -- from rendering. local function renderEmptyRowCategories() for _, s in ipairs(empty_row_categories) do root:wikitext(s) end end -- Render tracking categories. args.decat == turns off tracking categories. local function renderTrackingCategories() if args.decat == 'yes' then return end if args.child == 'yes' then if args.title then root:wikitext( '[[Category:Pages using embedded infobox templates with the title parameter]]' ) end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles using infobox templates with no data rows]]') end end --[=[ Loads the templatestyles for the infobox. TODO: FINISH loading base templatestyles here rather than in MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables. See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :). When we do this we should clean up the inline CSS below too. Will have to do some bizarre conversion category like with sidebar. ]=] local function loadTemplateStyles() local frame = mw.getCurrentFrame() local hlist_templatestyles = '' if lists.hlist_t.found then hlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.hlist_t.styles } } end local plainlist_templatestyles = '' if lists.plainlist_t.found then plainlist_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = lists.plainlist_t.styles } } end -- See function description local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' } } local templatestyles = '' if args['templatestyles'] then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['templatestyles'] } } end local child_templatestyles = '' if args['child templatestyles'] then child_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['child templatestyles'] } } end local grandchild_templatestyles = '' if args['grandchild templatestyles'] then grandchild_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args['grandchild templatestyles'] } } end return table.concat({ -- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering. -- this ordering is not a guarantee because the rows of interest invoking -- each class may not be on a specific page hlist_templatestyles, plainlist_templatestyles, base_templatestyles, templatestyles, child_templatestyles, grandchild_templatestyles }) end -- common functions between the child and non child cases local function structure_infobox_common() renderSubheaders() renderImages() preprocessRows() renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderEmptyRowCategories() renderTrackingCategories() cleanInfobox() end -- Specify the overall layout of the infobox, with special settings if the -- infobox is used as a 'child' inside another infobox. local function _infobox() if args.child ~= 'yes' then root = mw.html.create('table') root :addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox') :addClass(args.bodyclass) -- @deprecated next; target .infobox-<name> :cssText(args.bodystyle) has_list_class({ args.bodyclass }) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end structure_infobox_common() return loadTemplateStyles() .. root end -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. local function preprocessSingleArg(argName) if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end -- Assign the parameters with the given prefixes to the args table, in order, in -- batches of the step size specified. This is to prevent references etc. from -- appearing in the wrong order. The prefixTable should be an array containing -- tables, each of which has two possible fields, a "prefix" string and a -- "depend" table. The function always parses parameters containing the "prefix" -- string, but only parses parameters in the "depend" table if the prefix -- parameter is present and non-blank. local function preprocessArgs(prefixTable, step) if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present -- and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then -- Do another loop if any arguments are found, even blank ones. moreArgumentsExist = true preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present -- and not blank, or we are processing "prefix1" and "prefix" is -- present and not blank, and if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end -- Parse the data parameters in the same order that the old {{infobox}} did, so -- that references etc. will display in the expected places. Parameters that -- depend on another parameter are only processed if that parameter is present, -- to avoid phantom references appearing in article reference lists. local function parseDataParameters() preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') -- different behaviour for italics if blank or absent args['italic title'] = origArgs['italic title'] preprocessSingleArg('decat') preprocessSingleArg('templatestyles') preprocessSingleArg('child templatestyles') preprocessSingleArg('grandchild templatestyles') end -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. function p.infobox(frame) if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end -- For calling via #invoke within a template function p.infoboxTemplate(frame) origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p 0ddb7e5c8426d67cd589b710efb9912ddfb67fea Module:InfoboxImage 828 84 254 2023-03-28T20:13:53Z Vorlitix 3 Created page with "-- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if th..." Scribunto text/plain -- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- class - HTML classes to add to the image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page local i = {}; local placeholder_image = { "Blue - Replace this image female.svg", "Blue - Replace this image male.svg", "Female no free image yet.png", "Flag of None (square).svg", "Flag of None.svg", "Flag of.svg", "Green - Replace this image female.svg", "Green - Replace this image male.svg", "Image is needed female.svg", "Image is needed male.svg", "Location map of None.svg", "Male no free image yet.png", "Missing flag.png", "No flag.svg", "No free portrait.svg", "No portrait (female).svg", "No portrait (male).svg", "Red - Replace this image female.svg", "Red - Replace this image male.svg", "Replace this image female (blue).svg", "Replace this image female.svg", "Replace this image male (blue).svg", "Replace this image male.svg", "Silver - Replace this image female.svg", "Silver - Replace this image male.svg", "Replace this image.svg", "Cricket no pic.png", "CarersLogo.gif", "Diagram Needed.svg", "Example.jpg", "Image placeholder.png", "No male portrait.svg", "Nocover-upload.png", "NoDVDcover copy.png", "Noribbon.svg", "No portrait-BFD-test.svg", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Sin bandera.svg", "Sin escudo.svg", "Replace this image - temple.png", "Replace this image butterfly.png", "Replace this image.svg", "Replace this image1.svg", "Resolution angle.png", "Image-No portrait-text-BFD-test.svg", "Insert image here.svg", "No image available.png", "NO IMAGE YET square.png", "NO IMAGE YET.png", "No Photo Available.svg", "No Screenshot.svg", "No-image-available.jpg", "Null.png", "PictureNeeded.gif", "Place holder.jpg", "Unbenannt.JPG", "UploadACopyrightFreeImage.svg", "UploadAnImage.gif", "UploadAnImage.svg", "UploadAnImageShort.svg", "CarersLogo.gif", "Diagram Needed.svg", "No male portrait.svg", "NoDVDcover copy.png", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Noimage.gif", } function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with [[ then remove that and anything after | if mw.ustring.sub(image,1,2) == "[[" then image = mw.ustring.sub(image,3); image = mw.ustring.gsub(image, "([^|]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2); for i,j in pairs(placeholder_image) do if image == j then return true end end return false end function i.InfoboxImage(frame) local image = frame.args["image"]; if image == "" or image == nil then return ""; end if image == "&nbsp;" then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image) == true then return ""; end end if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found local cat = ""; if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then cat = "[[Category:Pages using infoboxes with thumbnail images]]"; end return image .. cat; elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then return image; elseif mw.ustring.sub(image,1,1) == "<" then return image; elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then -- Found strip marker at begining, so pass don't process at all return image; elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then -- Found strip marker at begining, so pass don't process at all return image; else local result = ""; local page = frame.args["page"]; local size = frame.args["size"]; local maxsize = frame.args["maxsize"]; local sizedefault = frame.args["sizedefault"]; local alt = frame.args["alt"]; local link = frame.args["link"]; local title = frame.args["title"]; local border = frame.args["border"]; local upright = frame.args["upright"] or ""; local thumbtime = frame.args["thumbtime"] or ""; local center = frame.args["center"]; local class = frame.args["class"]; -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end if maxsize ~= "" and maxsize ~= nil then -- if no sizedefault then set to maxsize if sizedefault == "" or sizedefault == nil then sizedefault = maxsize end -- check to see if size bigger than maxsize if size ~= "" and size ~= nil then local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0; local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0; if sizenumber>maxsizenumber and maxsizenumber>0 then size = maxsize; end end end -- add px to size if just a number if (tonumber(size) or 0) > 0 then size = size .. "px"; end -- add px to sizedefault if just a number if (tonumber(sizedefault) or 0) > 0 then sizedefault = sizedefault .. "px"; end result = "[[File:" .. image; if page ~= "" and page ~= nil then result = result .. "|page=" .. page; end if size ~= "" and size ~= nil then result = result .. "|" .. size; elseif sizedefault ~= "" and sizedefault ~= nil then result = result .. "|" .. sizedefault; else result = result .. "|frameless"; end if center == "yes" then result = result .. "|center" end if alt ~= "" and alt ~= nil then result = result .. "|alt=" .. alt; end if link ~= "" and link ~= nil then result = result .. "|link=" .. link; end if border == "yes" then result = result .. "|border"; end if upright == "yes" then result = result .. "|upright"; elseif upright ~= "" then result = result .. "|upright=" .. upright; end if thumbtime ~= "" then result = result .. "|thumbtime=" .. thumbtime; end if class ~= nil and class ~= "" then result = result .. "|class=" .. class; end -- if alt value is a keyword then do not use as a description if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then alt = nil; end if title ~= "" and title ~= nil then -- does title param contain any templatestyles? If yes then set to blank. if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then title = nil; end end if title ~= "" and title ~= nil then result = result .. "|" .. title; end result = result .. "]]"; return result; end end return i; 0ee5fe75ba239fc5c9cedc81ca11bdc0be068542 Alpha 0.0.1 0 48 255 203 2023-03-29T01:07:24Z Hatmanthehat 2 wikitext text/x-wiki OBB Alpha 0.0.1 is the first released update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was published on March 21, 2022 at 4:16 PM, EST a few minutes before [[Alpha 0.0.2]] and a few hours before [[Alpha 0.0.3]]. This update was published after the game was first publicized 3 days ago on March 18, 2022. == Development and Changelog == ''For the Pre-OBB era, see [[Neighborhood RP]]'' The games map at the time was just a simple map featuring a [[Taco Ball]] and a few office buildings. A few buildings from Neighborhood RP were brought to Alpha 0.0.1 but were later remade in future versions. === Changelog: === * Fixed tools that relied on touching players. ''For the previous version, see [[Neighborhood RP]] ''For the next version, see [[Alpha 0.0.2]]'' [[Category:Versions]] bf2810ab2ea7defae78fee0d2f2aaddf2940c94f Module:Weather box/doc 828 86 257 2023-03-30T20:02:59Z Vorlitix 3 Created page with "{{high use| 18000 }} {{module rating|release}} {{Module rating|protected}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> == Usage == This module is used by {{tl|Weather box}}. &#123;{#invoke:{{BASEPAGENAME}}|''function_name''}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> }}</includeonly> {{Weather box{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}} |metric first = Y |single li..." wikitext text/x-wiki {{high use| 18000 }} {{module rating|release}} {{Module rating|protected}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> == Usage == This module is used by {{tl|Weather box}}. &#123;{#invoke:{{BASEPAGENAME}}|''function_name''}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go here and interwikis go in Wikidata. --> }}</includeonly> {{Weather box{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}} |metric first = Y |single line = Y |collapsed = |location = [[Edmonton City Centre (Blatchford Field) Airport]] (1981−2010) |Jan record high C = 11.7 |Feb record high C = 14.0 |Mar record high C = 23.9 |Apr record high C = 31.1 |May record high C = 32.3 |Jun record high C = 34.9 |Jul record high C = 34.6 |Aug record high C = 34.5 |Sep record high C = 33.9 |Oct record high C = 28.6 |Nov record high C = 21.7 |Dec record high C = 16.7 |year record high C = 34.9 |Jan high C = -6.0 |Feb high C = -2.7 |Mar high C = 2.2 |Apr high C = 11.2 |May high C = 17.5 |Jun high C = 21.0 |Jul high C = 23.1 |Aug high C = 22.6 |Sep high C = 17.1 |Oct high C = 10.4 |Nov high C = 0.0 |Dec high C = -4.5 |year high C = 9.3 |Jan mean C = -10.4 |Feb mean C = -7.6 |Mar mean C = -2.5 |Apr mean C = 5.4 |May mean C = 11.5 |Jun mean C = 15.5 |Jul mean C = 17.7 |Aug mean C = 16.9 |Sep mean C = 11.4 |Oct mean C = 5.1 |Nov mean C = -4.1 |Dec mean C = -8.8 |year mean C = 4.2 |Jan low C = -14.8 |Feb low C = -12.5 |Mar low C = -7.2 |Apr low C = -0.5 |May low C = 5.4 |Jun low C = 9.9 |Jul low C = 12.3 |Aug low C = 11.3 |Sep low C = 5.8 |Oct low C = -0.2 |Nov low C = -8.2 |Dec low C = -13.1 |year low C = -1.0 |Jan record low C = -44.4 |Feb record low C = -46.1 |Mar record low C = -36.1 |Apr record low C = -25.6 |May record low C = -12.2 |Jun record low C = -1.1 |Jul record low C = 0.6 |Aug record low C = -1.2 |Sep record low C = -11.7 |Oct record low C = -25.0 |Nov record low C = -34.1 |Dec record low C = -48.3 |year record low C = -48.3 |Jan chill = -52.8 |Feb chill = -50.7 |Mar chill = -44.6 |Apr chill = -37.5 |May chill = -14.5 |Jun chill = 0.0 |Jul chill = 0.0 |Aug chill = -3.7 |Sep chill = -13.3 |Oct chill = -34.3 |Nov chill = -50.2 |Dec chill = -55.5 |year chill = -55.5 |precipitation colour = green |Jan precipitation mm = 21.7 |Feb precipitation mm = 12.0 |Mar precipitation mm = 15.8 |Apr precipitation mm = 28.8 |May precipitation mm = 46.1 |Jun precipitation mm = 77.5 |Jul precipitation mm = 93.8 |Aug precipitation mm = 61.9 |Sep precipitation mm = 43.5 |Oct precipitation mm = 21.7 |Nov precipitation mm = 18.0 |Dec precipitation mm = 15.0 |year precipitation mm = 455.7 |rain colour = green |Jan rain mm = 1.3 |Feb rain mm = 0.76 |Mar rain mm = 1.7 |Apr rain mm = 14.5 |May rain mm = 40.7 |Jun rain mm = 77.5 |Jul rain mm = 93.8 |Aug rain mm = 61.8 |Sep rain mm = 42.4 |Oct rain mm = 10.9 |Nov rain mm = 1.6 |Dec rain mm = 0.73 |year rain mm = 347.8 |snow colour = green |Jan snow cm = 24.5 |Feb snow cm = 13.4 |Mar snow cm = 17.4 |Apr snow cm = 15.3 |May snow cm = 4.9 |Jun snow cm = 0.0 |Jul snow cm = 0.0 |Aug snow cm = 0.0 |Sep snow cm = 1.0 |Oct snow cm = 11.6 |Nov snow cm = 19.1 |Dec snow cm = 16.4 |year snow cm = 123.5 |Jan humidity = 65.2 |Feb humidity = 61.2 |Mar humidity = 56.5 |Apr humidity = 42.9 |May humidity = 40.4 |Jun humidity = 48.2 |Jul humidity = 52.6 |Aug humidity = 51.4 |Sep humidity = 50.1 |Oct humidity = 50.5 |Nov humidity = 64.7 |Dec humidity = 65.4 |year humidity = 54.1 |unit precipitation days = 0.2 mm |Jan precipitation days = 11.0 |Feb precipitation days = 7.9 |Mar precipitation days = 8.3 |Apr precipitation days = 8.8 |May precipitation days = 11.0 |Jun precipitation days = 14.2 |Jul precipitation days = 14.6 |Aug precipitation days = 11.1 |Sep precipitation days = 9.8 |Oct precipitation days = 8.0 |Nov precipitation days = 8.8 |Dec precipitation days = 9.4 |year precipitation days = 122.9 |unit rain days = 0.2 mm |Jan rain days = 1.1 |Feb rain days = 0.83 |Mar rain days = 1.4 |Apr rain days = 5.9 |May rain days = 10.5 |Jun rain days = 14.2 |Jul rain days = 14.6 |Aug rain days = 11.1 |Sep rain days = 9.6 |Oct rain days = 5.6 |Nov rain days = 1.5 |Dec rain days = 0.75 |year rain days = 77.3 |unit snow days = 0.2 cm |Jan snow days = 10.7 |Feb snow days = 7.7 |Mar snow days = 7.7 |Apr snow days = 4.2 |May snow days = 1.2 |Jun snow days = 0.0 |Jul snow days = 0.0 |Aug snow days = 0.0 |Sep snow days = 0.50 |Oct snow days = 3.2 |Nov snow days = 7.9 |Dec snow days = 9.3 |year snow days = 52.4 |Jan sun = 100.8 |Feb sun = 121.7 |Mar sun = 176.3 |Apr sun = 244.2 |May sun = 279.9 |Jun sun = 285.9 |Jul sun = 307.5 |Aug sun = 282.3 |Sep sun = 192.7 |Oct sun = 170.8 |Nov sun = 98.4 |Dec sun = 84.5 |year sun = 2344.8 |Jan percentsun = 40.2 |Feb percentsun = 44.1 |Mar percentsun = 48.1 |Apr percentsun = 58.2 |May percentsun = 56.8 |Jun percentsun = 56.2 |Jul percentsun = 60.2 |Aug percentsun = 61.5 |Sep percentsun = 50.4 |Oct percentsun = 52.0 |Nov percentsun = 37.8 |Dec percentsun = 36.0 |year percentsun = 50.1 |Jan uv = 0 |Feb uv = 1 |Mar uv = 3 |Apr uv = 5 |May uv = 7 |Jun uv = 9 |Jul uv = 11 |Aug uv = 9 |Sep uv = 7 |Oct uv = 5 |Nov uv = 3 |Dec uv = 1 |year uv = |source 1 = [[Environment Canada]],<ref name="CCN" >{{cite web |title=Edmonton City Centre Airport |work=Canadian Climate Normals 1981−2010 |publisher=Environment Canada |date=August 19, 2013 |url=http://climate.weather.gc.ca/climate_normals/results_1981_2010_e.html?stnID=1867&lang=e&dCode=0&province=ALTA&provBut=Go&month1=0&month2=12 |accessdate=September 10, 2013}}</ref> Weather Atlas<ref>{{cite web |url=https://www.weather-ca.com/en/canada/edmonton-climate |title=Monthly weather forecast and Climate: Edmonton, Canada |work=Weather Atlas |accessdate=March 12, 2019}}</ref> }} {{Template reference list}} f34c787384024e98965bbc70df17103dcb7c6e96 Module:Weather box/row 828 87 258 2023-03-30T20:04:20Z Vorlitix 3 Created page with "local math_mod = require('Module:Math') local traceText local Value Value = { lang = mw.getContentLanguage(), getDisplay = function (self, second) if not self:isValid() then return nil end local display = self.string if display == 'trace' then if second then -- If a cell displays "cm (inch)", show "trace" not "trace (trace)". return nil end return traceText or 'trace' end if math.abs(self.number) >= 1000 then display = self.lang:form..." Scribunto text/plain local math_mod = require('Module:Math') local traceText local Value Value = { lang = mw.getContentLanguage(), getDisplay = function (self, second) if not self:isValid() then return nil end local display = self.string if display == 'trace' then if second then -- If a cell displays "cm (inch)", show "trace" not "trace (trace)". return nil end return traceText or 'trace' end if math.abs(self.number) >= 1000 then display = self.lang:formatNum(math.abs(self.number)) if self.number < 0 then display = '−' .. display end elseif self.number < 0 then display = '−' .. display:sub(2) end return display end, getPrecision = function (self) local result = rawget(self, 'precision') if not result then if self:isValid() then result = math.max(0, math_mod._precision(self.string)) else result = 0 end rawset(self, 'precision', result) end return result end, isValid = function (self) return self.number ~= nil and self.number ~= -9999 end, new = function (v) local val, str, precision if type(v) == 'string' then if v == 'trace' then val, str, precision = 0, 'trace', 0 else val, str = math_mod._cleanNumber(v) end elseif type(v) == 'number' then val, str = v, tostring(v) end if not val then val, str = -9999, '' end return setmetatable({ number = val, string = str, precision = precision, }, Value) end, converts = { in2cm = { factor = 2.54 }, in2mm = { factor = 25.4 }, cm2in = { factor = 1/2.54, p2max = 1 }, mm2in = { factor = 1/25.4, p2max = 0 }, }, setConvert = function (self, invalue, units) -- Use method modified from [[Module:Convert]] to determine precision. if invalue.string == 'trace' then self.number, self.string, self.precision = 0, 'trace', 0 return end local convert = self.converts[units] or error('Unknown units') local outnum = invalue.number * convert.factor local precision = invalue:getPrecision() if outnum > 0 then local adjust = math.log10(1/convert.factor) + math.log10(2) local p1 = math.floor(precision + adjust) local p2 = 1 - math.floor(math.log10(outnum)) if convert.p2max then p2 = math.min(p2, convert.p2max) end precision = math.max(p1, p2) end self:setNumberRounded(outnum, precision) end, setNumberRounded = function (self, number, precision) if precision > 2 then precision = 2 end self.number = math_mod._round(number, precision) if precision < 0 then self.string = tostring(self.number) else local fmt = '%.' .. string.format('%d', precision) .. 'f' self.string = string.format(fmt, self.number) end end, } Value.__index = Value local function checkFlag(flag, default) if flag == nil then return default elseif type(flag) == 'boolean' then return flag elseif type(flag) == 'string' then flag = flag:lower() if flag == '0' or flag == 'false' or flag == '' or flag == 'no' or flag == 'n' then return false else return true end else return error('Flag type not valid') end end local function makeLine(label, first_values, second_values, color_values) local result = {'|- style="text-align: center;"\n! scope="row" style="height: 16px;" | ', label, "\n"} for i = 1, 13 do local color_str = color_values[i] if i == 13 then table.insert(result, table.concat( {'|style="', color_str, ' border-left-width:medium" | '} )) else table.insert(result, table.concat( {'|style="', color_str, '" | '} )) end local display = first_values[i]:getDisplay() if display then table.insert(result, display) if second_values ~= nil then display = second_values[i]:getDisplay(true) if display then table.insert(result, "<br />(" .. display .. ")") end end else table.insert(result, '—') end table.insert(result, "\n") end return table.concat(result) end local function getInputs(args, group_name, suffix, include_space) local month_names = { 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'year' } local str local values = {} if suffix == nil then for i, mon in ipairs(month_names) do if include_space then str = args[ mon .. ' ' .. group_name ] or '' else str = args[ mon .. group_name ] or '' end values[i] = Value.new(str) end else for i, mon in ipairs(month_names) do local value, updated for var, suf in ipairs(suffix) do if include_space then str = args[ mon .. ' ' .. group_name .. ' ' .. suf ] else str = args[ mon .. group_name .. ' ' .. suf ] end if str ~= nil and str ~= '' then value = Value.new(str) value.variant = var updated = true break end end if not updated then value = Value.new() value.variant = 0 end values[i] = value end end return values end local function getAnnualValue(values, mode) if mode == 'avg' or mode == 'sum' then local total = 0 local p1, p2, variant p1 = 0 for i = 1, 12 do if not values[i]:isValid() then return Value.new() end if not variant then local var = values[i].variant if var and var ~= 0 then variant = var end end p2 = values[i]:getPrecision() if p2 > p1 then p1 = p2 end total = total + values[i].number end local value = Value.new(total) if mode == 'avg' then value:setNumberRounded(total / 12, p1) end value.variant = variant return value elseif mode == 'min' then local target for i = 1, 12 do if values[i]:isValid() then if target == nil or values[i].number < target.number then target = values[i] end end end return target or Value.new() elseif mode == 'max' then local target for i = 1, 12 do if values[i]:isValid() then if target == nil or values[i].number > target.number then target = values[i] end end end return target or Value.new() else error('Unrecognized Annual Mode') end end local function reconcileTemperature(C_values, F_values) for i = 1, 13 do local p if C_values[i].string == '' then if F_values[i]:isValid() then p = F_values[i]:getPrecision() C_values[i]:setNumberRounded((F_values[i].number - 32)*5/9, p) end elseif F_values[i].string == '' then if C_values[i]:isValid() then p = C_values[i]:getPrecision() F_values[i]:setNumberRounded(C_values[i].number*9/5 + 32, p) end end end end local function reconcilePrecipitation(M_values, I_values, prefer_cm) local v_class = 0 for i = 1, 13 do if M_values[i].variant == 1 then v_class = 1 elseif M_values[i].variant == 2 then v_class = 2 end end if v_class == 0 then if prefer_cm then v_class = 1 else v_class = 2 end end for i = 1, 13 do local units if M_values[i].string == '' then if I_values[i]:isValid() then if v_class == 1 then units = 'in2cm' else units = 'in2mm' end M_values[i]:setConvert(I_values[i], units) M_values[i].variant = v_class end elseif I_values[i].string == '' then if M_values[i]:isValid() then if M_values[i].variant == 1 then units = 'cm2in' else units = 'mm2in' end I_values[i]:setConvert(M_values[i], units) end end end end local function _buildRow(definition, args, options) options = options or {} local wbc = require('Module:Weather box/colors' .. (options.sandbox or '')) local mode = (definition.mode or 'basic'):lower() local group_name = definition.group_name local first_values, second_values local color_values local color_scheme = definition.color_scheme or 't' local scale_factor = math_mod._cleanNumber(definition.scale_factor) or 1 local date_mode = checkFlag(definition.date_mode, false) local label = definition.label or '' local annual_mode = (definition.annual_mode or 'avg'):lower() local include_space = checkFlag(definition.include_space, true) local second_line = checkFlag(definition.second_line, false) local prefer_cm = checkFlag(definition.prefer_cm, false) local imperial_first = checkFlag(args['imperial first']) local metric_first = checkFlag(args['metric first']) local wantSingleLine = options.wantSingleLine or checkFlag(args['single line']) local trace = args.trace if trace and trace ~= '' then traceText = trace end if imperial_first == nil then imperial_first = metric_first == nil and true or not metric_first end if mode == 'basic' then first_values = getInputs(args, group_name, nil, include_space) second_values = nil elseif mode == 'temperature' then first_values = getInputs(args, group_name, {'C'}, include_space) second_values = getInputs(args, group_name, {'F'}, include_space) reconcileTemperature(first_values, second_values) elseif mode == "precipitation" then first_values = getInputs(args, group_name, {'cm', 'mm'}, include_space) second_values = getInputs(args, group_name, {'inch'}, include_space) reconcilePrecipitation(first_values, second_values, prefer_cm) else error('Requested mode not recognized') end local good = false for i = 1, 13 do if first_values[i].string ~= '' then good = true break end end if not good then return '' end if first_values[13].string == '' then first_values[13] = getAnnualValue(first_values, annual_mode) end if second_values ~= nil then if second_values[13].string == '' then second_values[13] = getAnnualValue(second_values, annual_mode) end end color_scheme = wbc.interpret_color_code(color_scheme) color_values = {} local month_adj = { 31/30, 28.25/30, 31/30, 1, 31/30, 1, 31/30, 31/30, 1, 31/30, 1, 31/30, 365.25/30 } for i = 1, 13 do if first_values[i]:isValid() then local adj = scale_factor if date_mode then adj = adj / month_adj[i] end if mode == "precipitation" then if first_values[i].variant == 1 then adj = adj * 10 end end table.insert(color_values, color_scheme(first_values[i].number * adj)) else table.insert(color_values, color_scheme(nil)) end end if imperial_first and second_values ~= nil then first_values, second_values = second_values, first_values end if not wantSingleLine then if second_line and second_values ~= nil then first_values = second_values end second_values = nil end return makeLine(label, first_values, second_values, color_values) end local function buildRow(frame) return _buildRow(frame.args, frame:getParent().args) -- row definition, template parameters end return { buildRow = buildRow, _buildRow = _buildRow, } 099ca7bc32ffdebf71c7586d45f45fc16296dc08 Module:Weather box/colors 828 88 259 2023-03-30T20:05:35Z Vorlitix 3 Created page with "local w = {} local math_mod = require('Module:Math') local function hex( value ) return string.format("%02X", value) end local function format_line( background, text_color ) return "background: #" .. background .. "; color:#" .. text_color .. ";" end local function range_pos( value, start, stop ) if start < stop then if value < start then return 0 elseif value > stop then return 1 else return (value - start) / (stop - start) end else if value <..." Scribunto text/plain local w = {} local math_mod = require('Module:Math') local function hex( value ) return string.format("%02X", value) end local function format_line( background, text_color ) return "background: #" .. background .. "; color:#" .. text_color .. ";" end local function range_pos( value, start, stop ) if start < stop then if value < start then return 0 elseif value > stop then return 1 else return (value - start) / (stop - start) end else if value < stop then return 1 elseif value > start then return 0 else return (start - value) / (start - stop) end end end function w.color_d( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._days_color( val ) end function w.color_pastel( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._pastel_color( val ) end function w.color_t( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._temperature_color( val ) end function w.color_green( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._green_color( val ) end function w.color_s( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._sunshine_color( val ) end function w.color_h( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._humidity_color( val ) end function w.color_p( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._precipitation_color( val ) end function w.color_u( frame ) local val = math_mod._cleanNumber( frame.args[1] ) return w._uv_color( val ) end function w._days_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item = hex( range_pos( val, 20, 0 )*255 ) background = item .. item item = hex( range_pos( val, 40, 20 )*255 ) background = background .. item if val >= 12 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._green_color( val ) local item1, item2, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item1 = hex( range_pos( val, 165.6, 0 )*255 ) item2 = hex( range_pos( val, 300, 165.61 )*207 + 48 ) background = item1 .. item2 .. item1 if val >= 200 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._temperature_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < 4.5 then item = range_pos( val, -42.75, 4.5 )*255 background = hex( item ) else item = range_pos( val, 60, 41.5 )*255 background = hex( item ) end if val <= 4.5 then item = range_pos( val, -42.75, 4.5 )*255 background = background .. hex( item ) else item = range_pos( val, 41.5, 4.5 )*255 background = background .. hex( item ) end if val < -42.78 then item = range_pos( val, -90, -42.78 )*255 background = background .. hex( item ) else item = range_pos( val, 23, 4.5 )*255 background = background .. hex( item ) end if val < -23.3 or val >= 37.8 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._precipitation_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item = hex( range_pos( val, 165.6, 0 )*255 ) background = item .. item item = hex( range_pos( val, 300, 165.61 )*207 + 48 ) background = background .. item if val > 90 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._humidity_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end item = hex( range_pos( val, 66.67, 0 )*255 ) background = item .. item item = hex( range_pos( val, 133.33, 66.667 )*255 ) background = background .. item if val >= 40 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._sunshine_color( val ) local item, background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < 90 then item = hex( range_pos( val, 0, 90 )*170 ) elseif val < 180 then item = hex( range_pos( val, 90, 180 )*42.5 + 170 ) else item = hex( range_pos( val, 180, 360 )*42.5 + 212.5 ) end background = item .. item if val < 90 then item = hex( range_pos( val, 0, 90 )*170 ) elseif val < 270 then item = hex( range_pos( val, 150, 90 )*170 ) else item = hex( range_pos( val, 270, 720 )*255 ) end background = background .. item if val < 80 then text_color = "FFFFFF" else text_color = "000000" end return format_line( background, text_color ) end function w._pastel_color( val ) local background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < -15 or val >= 39 then text_color = "FFFFFF" else text_color = "000000" end if val >= 51 then background = 'EE2200' else val = math_mod._round( (val + 25.5)/3, 0 ) if val == 1 then background = 'BB00CC' elseif val == 2 then background = 'CC00EE' elseif val == 3 then background = 'CC33EE' elseif val == 4 then background = 'CC55EE' elseif val == 5 then background = 'DD66EE' elseif val == 6 then background = 'DD77EE' elseif val == 7 then background = 'DD99EE' elseif val == 8 then background = 'DDAAEE' elseif val == 9 then background = 'DDBBEE' elseif val == 10 then background = 'EECCFF' elseif val == 11 then background = 'FFDDFF' elseif val == 12 then background = 'F1F1F1' elseif val == 13 then background = 'FFEEBB' elseif val == 14 then background = 'FFFFCC' elseif val == 15 then background = 'FFFFBB' elseif val == 16 then background = 'FFFFAA' elseif val == 17 then background = 'FFFF88' elseif val == 18 then background = 'FFCC33' elseif val == 19 then background = 'FFBB33' elseif val == 20 then background = 'FF9900' elseif val == 21 then background = 'FF8844' elseif val == 22 then background = 'FF6633' elseif val == 23 then background = 'FF5522' elseif val == 24 then background = 'FF4422' elseif val == 25 then background = 'EE4400' else background = 'AA00AA' end end return format_line( background, text_color ) end function w._uv_color( val ) local background, text_color if val == nil then return format_line( "FFFFFF", "000000" ) end if val < 3 then background = "3EA72D" elseif val >= 3 and val < 6 then background = "FFF300" elseif val >= 6 and val < 8 then background = "F18B00" elseif val >= 8 and val < 11 then background = "E53210" else background = "B567A4" end if val < 3 then text_color = "FFFFFF" elseif val >= 3 and val < 8 then text_color = "000000" else text_color = "FFFFFF" end return format_line( background, text_color ) end function w._none_color() return format_line( "FAFAFA", "000000" ) end function w.interpret_color_code( code ) code = code:lower() if code == 't' then return w._temperature_color elseif code == 'pastel' then return w._pastel_color elseif code == 'green' then return w._green_color elseif code == 'h' then return w._humidity_color elseif code == 's' then return w._sunshine_color elseif code == 'p' then return w._precipitation_color elseif code == 'd' then return w._days_color elseif code == 'u' then return w._uv_color elseif code == 'none' then return w._none_color else error( 'Unknown color scheme option' ) end end return w 963fbd84022409ca95c82b422a3e45207bdee1aa Module:Check for unknown parameters 828 89 260 2023-03-30T20:07:16Z Vorlitix 3 Created page with "-- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext..." Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end -- create the list of known args, regular expressions, and the return string local knownargs = {} local regexps = {} for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end -- loop over the parent args, and make sure they are on the list local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local values = {} for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(tostring(k), regexp) then knownflag = true break end end if not knownflag and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end end -- add results to the output tables local res = {} if #values > 0 then local unknown_text = args['unknown'] or 'Found _VALUE_, ' if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then local preview_text = args['preview'] if isnotempty(preview_text) then preview_text = require('Module:If preview')._warning({preview_text}) elseif preview == nil then preview_text = unknown_text end unknown_text = preview_text end for _, v in pairs(values) do -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links if v == '' then v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p 93db6d115d4328d2a5148bb42959105e367b663e Module:If preview 828 90 261 2023-03-30T20:07:48Z Vorlitix 3 Created page with "local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template usi..." Scribunto text/plain local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template using this module), depending on whether it is being previewed. ]] function p.pmain(frame) return p.main(frame:getParent()) end local function warning_text(warning) return mw.ustring.format( cfg.warning_infrastructure, cfg.templatestyles, warning ) end function p._warning(args) local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or '' if warning == '' then return warning_text(cfg.missing_warning) end if not cfg.preview then return '' end return warning_text(warning) end --[[ warning This function returns a "preview warning", which is the first argument marked up with HTML and some supporting text, depending on whether the page is being previewed. disabled since we'll implement the template version in general ]] --function p.warning(frame) -- return p._warning(frame.args) --end --[[ warning, but for pass-through templates like {{preview warning}} ]] function p.pwarning(frame) return p._warning(frame:getParent().args) end return p 9a92196d0001b8016f2501aedfadcc3adcb974ef Module:If preview/configuration 828 91 262 2023-03-30T20:09:14Z Vorlitix 3 Created page with "local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. return revision_id == nil or revision_id == '' end local function templatestyles() return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:If preview/styles.css' } } end return { preview = is_preview(), templatestyles = templatestyles(), warning_infrastructure =..." Scribunto text/plain local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. return revision_id == nil or revision_id == '' end local function templatestyles() return frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:If preview/styles.css' } } end return { preview = is_preview(), templatestyles = templatestyles(), warning_infrastructure = '%s<div class="preview-warning"><strong>Preview warning:</strong> %s</div>', missing_warning = 'The template has no warning text. Please add a warning.' } 1748b8b422f9161f7136f6c9bdbd8d0b8b40e7f3 Module:If preview/styles.css 828 92 263 2023-03-30T20:10:39Z Vorlitix 3 Created page with "/* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; }" sanitized-css text/css /* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; } 8b79ffc4853d424a805b084de00030e04bbd573e Template:Weather Box 10 93 264 2023-03-30T20:11:31Z Vorlitix 3 Created page with "<includeonly>{{#invoke:weather box|main}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{Namespace detect | main = [[Category:Pages using weather box with unknown parameters|_VALUE_{{PAGENAME}}]] | template = [[Category:Pages using weather box with unknown parameters|Template_VALUE_{{PAGENAME}}]] | other = <!-- do not categorize -->}}|preview=Page using [[Template:Weather box]] with unknown parameter "_VALUE_"|ignoreblank=y| Apr afthumidity | Apr avg..." wikitext text/x-wiki <includeonly>{{#invoke:weather box|main}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{Namespace detect | main = [[Category:Pages using weather box with unknown parameters|_VALUE_{{PAGENAME}}]] | template = [[Category:Pages using weather box with unknown parameters|Template_VALUE_{{PAGENAME}}]] | other = <!-- do not categorize -->}}|preview=Page using [[Template:Weather box]] with unknown parameter "_VALUE_"|ignoreblank=y| Apr afthumidity | Apr avg record high C | Apr avg record high F | Apr avg record low C | Apr avg record low F | Apr chill | Apr dew point C | Apr dew point F | Apr high C | Apr high F | Apr humidity | Apr light | Apr low C | Apr low F | Apr maximum humidex | Apr mean C | Apr mean F | Apr percentsun | Apr precipitation cm | Apr precipitation days | Apr precipitation inch | Apr precipitation mm | Apr rain cm | Apr rain days | Apr rain inch | Apr rain mm | Apr record high C | Apr record high F | Apr record low C | Apr record low F | Apr snow cm | Apr snow days | Apr snow inch | Apr snow mm | Apr snow depth cm | Apr snow depth inch | Apr snow depth mm | Apr sun | Aprd sun | Apr uv | Aug afthumidity | Aug avg record high C | Aug avg record high F | Aug avg record low C | Aug avg record low F | Aug chill | Aug dew point C | Aug dew point F | Aug high C | Aug high F | Aug humidity | Aug light | Aug low C | Aug low F | Aug maximum humidex | Aug mean C | Aug mean F | Aug percentsun | Aug precipitation cm | Aug precipitation days | Aug precipitation inch | Aug precipitation mm | Aug rain cm | Aug rain days | Aug rain inch | Aug rain mm | Aug record high C | Aug record high F | Aug record low C | Aug record low F | Aug snow cm | Aug snow days | Aug snow inch | Aug snow mm | Aug snow depth cm | Aug snow depth inch | Aug snow depth mm | Aug sun | Augd sun | Aug uv | collapsed | daily | date | Dec afthumidity | Dec avg record high C | Dec avg record high F | Dec avg record low C | Dec avg record low F | Dec chill | Dec dew point C | Dec dew point F | Dec high C | Dec high F | Dec humidity | Dec light | Dec low C | Dec low F | Dec maximum humidex | Dec mean C | Dec mean F | Dec percentsun | Dec precipitation cm | Dec precipitation days | Dec precipitation inch | Dec precipitation mm | Dec rain cm | Dec rain days | Dec rain inch | Dec rain mm | Dec record high C | Dec record high F | Dec record low C | Dec record low F | Dec snow cm | Dec snow days | Dec snow inch | Dec snow mm | Dec snow depth cm | Dec snow depth inch | Dec snow depth mm | Dec sun | Decd sun | Dec uv | Feb afthumidity | Feb avg record high C | Feb avg record high F | Feb avg record low C | Feb avg record low F | Feb chill | Feb dew point C | Feb dew point F | Feb high C | Feb high F | Feb humidity | Feb light | Feb low C | Feb low F | Feb maximum humidex | Feb mean C | Feb mean F | Feb percentsun | Feb precipitation cm | Feb precipitation days | Feb precipitation inch | Feb precipitation mm | Feb rain cm | Feb rain days | Feb rain inch | Feb rain mm | Feb record high C | Feb record high F | Feb record low C | Feb record low F | Feb snow cm | Feb snow days | Feb snow inch | Feb snow mm | Feb snow depth cm | Feb snow depth inch | Feb snow depth mm | Feb sun | Febd sun | Feb uv | humidity colour | Jan afthumidity | Jan avg record high C | Jan avg record high F | Jan avg record low C | Jan avg record low F | Jan chill | Jan dew point C | Jan dew point F | Jan high C | Jan high F | Jan humidity | Jan light | Jan low C | Jan low F | Jan maximum humidex | Jan mean C | Jan mean F | Jan percentsun | Jan precipitation cm | Jan precipitation days | Jan precipitation inch | Jan precipitation mm | Jan rain cm | Jan rain days | Jan rain inch | Jan rain mm | Jan record high C | Jan record high F | Jan record low C | Jan record low F | Jan snow cm | Jan snow days | Jan snow inch | Jan snow mm | Jan snow depth cm | Jan snow depth inch | Jan snow depth mm | Jan sun | Jand sun | Jan uv | Jul afthumidity | Jul avg record high C | Jul avg record high F | Jul avg record low C | Jul avg record low F | Jul chill | Jul dew point C | Jul dew point F | Jul high C | Jul high F | Jul humidity | Jul light | Jul low C | Jul low F | Jul maximum humidex | Jul mean C | Jul mean F | Jul percentsun | Jul precipitation cm | Jul precipitation days | Jul precipitation inch | Jul precipitation mm | Jul rain cm | Jul rain days | Jul rain inch | Jul rain mm | Jul record high C | Jul record high F | Jul record low C | Jul record low F | Jul snow cm | Jul snow days | Jul snow inch | Jul snow mm | Jul snow depth cm | Jul snow depth inch | Jul snow depth mm | Jul sun | Juld sun | Jul uv | Jun afthumidity | Jun avg record high C | Jun avg record high F | Jun avg record low C | Jun avg record low F | Jun chill | Jun dew point C | Jun dew point F | Jun high C | Jun high F | Jun humidity | Jun light | Jun low C | Jun low F | Jun maximum humidex | Jun mean C | Jun mean F | Jun percentsun | Jun precipitation cm | Jun precipitation days | Jun precipitation inch | Jun precipitation mm | Jun rain cm | Jun rain days | Jun rain inch | Jun rain mm | Jun record high C | Jun record high F | Jun record low C | Jun record low F | Jun snow cm | Jun snow days | Jun snow inch | Jun snow mm | Jun snow depth cm | Jun snow depth inch | Jun snow depth mm | Jun sun | Jund sun | Jun uv | location | Mar afthumidity | Mar avg record high C | Mar avg record high F | Mar avg record low C | Mar avg record low F | Mar chill | Mar dew point C | Mar dew point F | Mar high C | Mar high F | Mar humidity | Mar light | Mar low C | Mar low F | Mar maximum humidex | Mar mean C | Mar mean F | Mar percentsun | Mar precipitation cm | Mar precipitation days | Mar precipitation inch | Mar precipitation mm | Mar rain cm | Mar rain days | Mar rain inch | Mar rain mm | Mar record high C | Mar record high F | Mar record low C | Mar record low F | Mar snow cm | Mar snow days | Mar snow inch | Mar snow mm | Mar snow depth cm | Mar snow depth inch | Mar snow depth mm | Mar sun | Mard sun | Mar uv | margin | May afthumidity | May avg record high C | May avg record high F | May avg record low C | May avg record low F | May chill | May dew point C | May dew point F | May high C | May high F | May humidity | May light | May low C | May low F | May maximum humidex | May mean C | May mean F | May percentsun | May precipitation cm | May precipitation days | May precipitation inch | May precipitation mm | May rain cm | May rain days | May rain inch | May rain mm | May record high C | May record high F | May record low C | May record low F | May snow cm | May snow days | May snow inch | May snow mm | May snow depth cm | May snow depth inch | May snow depth mm | May sun | Mayd sun | May uv | metric first | name | Nov afthumidity | Nov avg record high C | Nov avg record high F | Nov avg record low C | Nov avg record low F | Nov chill | Nov dew point C | Nov dew point F | Nov high C | Nov high F | Nov humidity | Nov light | Nov low C | Nov low F | Nov maximum humidex | Nov mean C | Nov mean F | Nov percentsun | Nov precipitation cm | Nov precipitation days | Nov precipitation inch | Nov precipitation mm | Nov rain cm | Nov rain days | Nov rain inch | Nov rain mm | Nov record high C | Nov record high F | Nov record low C | Nov record low F | Nov snow cm | Nov snow days | Nov snow inch | Nov snow mm | Nov snow depth cm | Nov snow depth inch | Nov snow depth mm | Nov sun | Novd sun | Nov uv | Oct afthumidity | Oct avg record high C | Oct avg record high F | Oct avg record low C | Oct avg record low F | Oct chill | Oct dew point C | Oct dew point F | Oct high C | Oct high F | Oct humidity | Oct light | Oct low C | Oct low F | Oct maximum humidex | Oct mean C | Oct mean F | Oct percentsun | Oct precipitation cm | Oct precipitation days | Oct precipitation inch | Oct precipitation mm | Oct rain cm | Oct rain days | Oct rain inch | Oct rain mm | Oct record high C | Oct record high F | Oct record low C | Oct record low F | Oct snow cm | Oct snow days | Oct snow inch | Oct snow mm | Oct snow depth cm | Oct snow depth inch | Oct snow depth mm | Oct sun | Octd sun | Oct uv | open | precip days colour | precipitation colour | rain colour | Sep afthumidity | Sep avg record high C | Sep avg record high F | Sep avg record low C | Sep avg record low F | Sep chill | Sep dew point C | Sep dew point F | Sep high C | Sep high F | Sep humidity | Sep light | Sep low C | Sep low F | Sep maximum humidex | Sep mean C | Sep mean F | Sep percentsun | Sep precipitation cm | Sep precipitation days | Sep precipitation inch | Sep precipitation mm | Sep rain cm | Sep rain days | Sep rain inch | Sep rain mm | Sep record high C | Sep record high F | Sep record low C | Sep record low F | Sep snow cm | Sep snow days | Sep snow inch | Sep snow mm | Sep snow depth cm | Sep snow depth inch | Sep snow depth mm | Sep sun | Sepd sun | Sep uv | single line | snow colour | source | source 1 | source 2 | sun colour | temperature colour | time day | trace | unit precipitation days | unit rain days | unit snow days | width | year afthumidity | year avg record high C | year avg record high F | year avg record low C | year avg record low F | year chill | year dew point C | year dew point F | year high C | year high F | year humidity | year light | year low C | year low F | year maximum humidex | year mean C | year mean F | year percentsun | year precipitation days | year precipitation inch | year precipitation cm | year precipitation mm | year rain days | year rain inch | year rain cm | year rain mm | year record high C | year record high F | year record low C | year record low F | year snow days | year snow inch | year snow cm | year snow mm | year snow depth cm | year snow depth inch | year snow depth mm | year sun | yeard sun | year uv }}<noinclude> {{Documentation}} </noinclude> 36e948a47be84ce2fa209a67030538e08f49df17 Template:Namespace detect 10 94 265 2023-03-30T20:12:56Z Vorlitix 3 Created page with "{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>" wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> b4af86f91bea873fdb8145e7809511fed3a610ce Module:Namespace detect 828 95 266 2023-03-30T20:13:21Z Vorlitix 3 Created page with "--[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are..." Scribunto text/plain --[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are supported, -- -- and namespace names are detected automatically for the local wiki. The -- -- module can also use the corresponding subject namespace value if it is -- -- used on a talk page. Parameter names can be configured for different wikis -- -- by altering the values in the "cfg" table in -- -- Module:Namespace detect/config. -- -- -- -------------------------------------------------------------------------------- --]] local data = mw.loadData('Module:Namespace detect/data') local argKeys = data.argKeys local cfg = data.cfg local mappings = data.mappings local yesno = require('Module:Yesno') local mArguments -- Lazily initialise Module:Arguments local mTableTools -- Lazily initilalise Module:TableTools local ustringLower = mw.ustring.lower local p = {} local function fetchValue(t1, t2) -- Fetches a value from the table t1 for the first key in array t2 where -- a non-nil value of t1 exists. for i, key in ipairs(t2) do local value = t1[key] if value ~= nil then return value end end return nil end local function equalsArrayValue(t, value) -- Returns true if value equals a value in the array t. Otherwise -- returns false. for i, arrayValue in ipairs(t) do if value == arrayValue then return true end end return false end function p.getPageObject(page) -- Get the page object, passing the function through pcall in case of -- errors, e.g. being over the expensive function count limit. if page then local success, pageObject = pcall(mw.title.new, page) if success then return pageObject else return nil end else return mw.title.getCurrentTitle() end end -- Provided for backward compatibility with other modules function p.getParamMappings() return mappings end local function getNamespace(args) -- This function gets the namespace name from the page object. local page = fetchValue(args, argKeys.demopage) if page == '' then page = nil end local demospace = fetchValue(args, argKeys.demospace) if demospace == '' then demospace = nil end local subjectns = fetchValue(args, argKeys.subjectns) local ret if demospace then -- Handle "demospace = main" properly. if equalsArrayValue(argKeys.main, ustringLower(demospace)) then ret = mw.site.namespaces[0].name else ret = demospace end else local pageObject = p.getPageObject(page) if pageObject then if pageObject.isTalkPage then -- Get the subject namespace if the option is set, -- otherwise use "talk". if yesno(subjectns) then ret = mw.site.namespaces[pageObject.namespace].subject.name else ret = 'talk' end else ret = pageObject.nsText end else return nil -- return nil if the page object doesn't exist. end end ret = ret:gsub('_', ' ') return ustringLower(ret) end function p._main(args) -- Check the parameters stored in the mappings table for any matches. local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys local params = mappings[namespace] or {} local ret = fetchValue(args, params) --[[ -- If there were no matches, return parameters for other namespaces. -- This happens if there was no text specified for the namespace that -- was detected or if the demospace parameter is not a valid -- namespace. Note that the parameter for the detected namespace must be -- completely absent for this to happen, not merely blank. --]] if ret == nil then ret = fetchValue(args, argKeys.other) end return ret end function p.main(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {removeBlanks = false}) local ret = p._main(args) return ret or '' end function p.table(frame) --[[ -- Create a wikitable of all subject namespace parameters, for -- documentation purposes. The talk parameter is optional, in case it -- needs to be excluded in the documentation. --]] -- Load modules and initialise variables. mTableTools = require('Module:TableTools') local namespaces = mw.site.namespaces local cfg = data.cfg local useTalk = type(frame) == 'table' and type(frame.args) == 'table' and yesno(frame.args.talk) -- Whether to use the talk parameter. -- Get the header names. local function checkValue(value, default) if type(value) == 'string' then return value else return default end end local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace') local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases') -- Put the namespaces in order. local mappingsOrdered = {} for nsname, params in pairs(mappings) do if useTalk or nsname ~= 'talk' then local nsid = namespaces[nsname].id -- Add 1, as the array must start with 1; nsid 0 would be lost otherwise. nsid = nsid + 1 mappingsOrdered[nsid] = params end end mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered) -- Build the table. local ret = '{| class="wikitable"' .. '\n|-' .. '\n! ' .. nsHeader .. '\n! ' .. aliasesHeader for i, params in ipairs(mappingsOrdered) do for j, param in ipairs(params) do if j == 1 then ret = ret .. '\n|-' .. '\n| <code>' .. param .. '</code>' .. '\n| ' elseif j == 2 then ret = ret .. '<code>' .. param .. '</code>' else ret = ret .. ', <code>' .. param .. '</code>' end end end ret = ret .. '\n|-' .. '\n|}' return ret end return p a4757000273064f151f0f22dc0e139092e5ff443 Orange Blossom Beach Community 0 96 267 2023-03-31T00:35:29Z Vorlitix 3 i am eating a BLT for dinner today wikitext text/x-wiki ''Not to be confused with the [https://obb.miraheze.org/wiki/Orange_Blossom_Beach_(game)#Community Community of Orange Blossom Beach]'' Orange Blossom Beach Community is the main group that maintains ownership of the eponymous game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that too goes by the eponymous name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants. ==History== The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022. Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group. Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business". Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2022 [[Category:Miscellaneous information]] 268b0ae54295f742e75c11f546d14cd5ba467079 Shiloh Springs 0 98 269 2023-06-28T08:02:00Z Carsop 4 created page wikitext text/x-wiki Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]]. Shiloh Springs has a population of 59. e49847907f5018a4c8632f870b7d0d931974fc6e 270 269 2023-06-28T08:03:02Z Carsop 4 added category wikitext text/x-wiki Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]]. Shiloh Springs has a population of 59. [[Category:Map locations]] 81f7cdcc94151470ea0ae097742d2d25a6e69e2f 281 270 2023-06-28T08:51:52Z Carsop 4 added image wikitext text/x-wiki [[File:Shiloh springs sign.png|thumb|550x550px|The entrance to Shiloh Springs]] Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]]. Shiloh Springs has a population of 59. [[Category:Map locations]] 67ec817521ae4450d3580ea5ec4fcfd50b176936 Orange Blossom Beach 0 33 271 208 2023-06-28T08:04:04Z Carsop 4 wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern renowned attorney Earl Harpmann, with his knowledge of the law making him one of the best Lawyers in the area. [[Category:Map locations]] c939e2839e0c29d36343017abd9332434ea0e7c7 Northwest Florida Regional Airport 0 99 272 2023-06-28T08:28:46Z Carsop 4 created page (delta Air Lines is not a misspelled Airlines, thats just how the company is named) wikitext text/x-wiki The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. 97ed4830eab48a68a0e74908af187b5f549c5b3d 273 272 2023-06-28T08:29:34Z Carsop 4 added category wikitext text/x-wiki The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. [[Category:Map locations]] 6ff37c9447701661cb90834c55845608ef5b274c 274 273 2023-06-28T08:33:27Z Carsop 4 mentioned star gas wikitext text/x-wiki The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. The airport is across from [[Star Gas]]. [[Category:Map locations]] fa49a5e4943c758e11d177022dfd9a2c05e9c181 279 274 2023-06-28T08:48:15Z Carsop 4 added images wikitext text/x-wiki [[File:Nfra airport.png|thumb|508x508px|The front of the Northwest Florida Regional Airport as seen in-game.]] [[File:Terminal.png|thumb|508x508px|The terminal of the Northwest Florida Regional Airport]] The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. The airport is across from [[Star Gas]]. [[Category:Map locations]] 69fe0f8ed63acd95bcf0a38b341c65b7119aef6d File:Star Gas.png 6 100 275 2023-06-28T08:36:54Z Carsop 4 wikitext text/x-wiki A screenshot of Star Gas in OBB. The prices are high. 8ae9b3fbafedac5ff1a9e7821d27c6be51027e64 Star Gas 0 101 276 2023-06-28T08:38:41Z Carsop 4 created page wikitext text/x-wiki [[File:Star Gas.png|thumb|520x520px|Star Gas as seen in Orange Blossom Beach.]] Star Gas is a gas station located in [[Orange Blossom Beach]] across from the [[Northwest Florida Regional Airport]]. Star Gas is known for having high gas prices to take advantage of people returning rental cars. Star Gas consists of eight gas pumps, a food mart and a certified truck scale. [[Category:Map locations]] 90a6f891f90e49d6d81619fd438ec8013ea2c276 File:Nfra airport.png 6 102 277 2023-06-28T08:40:45Z Carsop 4 wikitext text/x-wiki its the airport 4db0a4dc8f58db1efa36576b3e9033a3880b8587 File:Terminal.png 6 103 278 2023-06-28T08:43:04Z Carsop 4 wikitext text/x-wiki the airport terminal d65e9967377cc90fe7d496d7dcb9d095d8fb7875 File:Shiloh springs sign.png 6 104 280 2023-06-28T08:50:29Z Carsop 4 wikitext text/x-wiki the sign outside shiloh springs ecbd80b87777934e0d39aaa16be27eefaa9682e7 File:Soap and suds interior.png 6 105 282 2023-06-28T08:59:41Z Carsop 4 wikitext text/x-wiki the interior of the soap & suds laundromat 350d6d3acdd92672492691b80615984df79bbae5 Soap & Suds Laundromat 0 106 283 2023-06-28T09:00:26Z Carsop 4 created page wikitext text/x-wiki [[File:Soap and suds interior.png|thumb|508x508px|The inside of the Soap & Suds Laundromat.]] The Soap & Suds Laundromat is a laundromat located in [[Orange Blossom Beach]]. [[Category:Map locations]] 4f5984f4a56543fc6d96ae5f98fbb91c5b9b25f2 File:Cwc.png 6 107 284 2023-06-28T09:05:15Z Carsop 4 wikitext text/x-wiki the craig world cafe 7f32cd9fb857f0ec1757f8be116ade0b0da2acf4 Craig World Cafe 0 108 285 2023-06-28T09:06:38Z Carsop 4 created page, needs last name for the owner wikitext text/x-wiki [[File:Cwc.png|thumb|508x508px|The front of the Craig World Cafe.]] The Craig World Cafe is a Cafe in [[Orange Blossom Beach]]. The Craig World Cafe was opened in 2004 and is owned and operated by Craig (last name). [[Category:Map locations]] 28d37163b08713085d5ce7b246feac45e0c644fb File:Italy pizza.png 6 109 286 2023-06-28T09:10:17Z Carsop 4 wikitext text/x-wiki italy pizza 2c4c1ab65bae70b673ffa6e0b08fb979f75946a6 Italy Pizza 0 110 287 2023-06-28T09:17:52Z Carsop 4 Created page wikitext text/x-wiki [[File:Italy pizza.png|thumb|508x508px|The front of Italy Pizza.]] Italy Pizza is a pizza place in [[Orange Blossom Beach]]. Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen. Italy Pizza has been shutdown once due to a rat infestation, but has reopened since. 9bfcd32185d1ce6b66a88579b3c04ec90d43b87d 290 287 2023-06-28T09:30:32Z Carsop 4 added category wikitext text/x-wiki [[File:Italy pizza.png|thumb|508x508px|The front of Italy Pizza.]] Italy Pizza is a pizza place in [[Orange Blossom Beach]]. Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen. Italy Pizza has been shutdown once due to a rat infestation, but has reopened since. [[Category:Map locations]] bc9fec2858af9c7d359d5e7ff563f0c34c75499d File:Charlottes market.png 6 111 288 2023-06-28T09:23:52Z Carsop 4 wikitext text/x-wiki the front of charlotte's market e99f6c2d12c4609e2420d324a26f8284435e932e Charlotte's Neighborhood Market 0 112 289 2023-06-28T09:26:25Z Carsop 4 created page wikitext text/x-wiki [[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]] Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. The market used to be the original location for [[Harpmann & Associates]]. 8dc9b8651e3f70a2fa01e54d4b7faa036457da81 291 289 2023-06-28T09:30:57Z Carsop 4 added category wikitext text/x-wiki [[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]] Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. The market used to be the original location for [[Harpmann & Associates]]. [[Category:Map locations]] 20613f9a7b372804b51033c98f4ec4b880340854 File:Lake drive plaza.png 6 113 292 2023-06-28T09:37:25Z Carsop 4 wikitext text/x-wiki the lake drive plaza 5f9681edcb901da330a6c3e7049e429c4882e9cb Lake Drive Plaza 0 114 293 2023-06-28T09:39:22Z Carsop 4 Created page wikitext text/x-wiki [[File:Lake drive plaza.png|thumb|755x755px|The Lake Drive Plaza strip mall]] Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. The Lake Drive Plaza has been home to several stores: Current Stores: * [[Charlotte's Neighborhood Market]] * [[Blossom Photography]] * [[Taco Ball]] * [[Discount Tree]] * [[Jerry's Thrift & More Clearance Center]] Former Stores: * [[Harpmann & Associates]] [[Category:Map locations]] da8708049bb48bf8f4c5771108fe648aa9707f8c 301 293 2023-06-28T09:51:14Z Carsop 4 Added comment wikitext text/x-wiki [[File:Lake drive plaza.png|thumb|755x755px|The Lake Drive Plaza strip mall<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]] Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. The Lake Drive Plaza has been home to several stores: Current Stores: * [[Charlotte's Neighborhood Market]] * [[Blossom Photography]] * [[Taco Ball]] * [[Discount Tree]] * [[Jerry's Thrift & More Clearance Center]] Former Stores: * [[Harpmann & Associates]] [[Category:Map locations]] 63bc35cd807619b0ae6fa42918fa4caa240dbef4 File:Blossom photography.png 6 115 294 2023-06-28T09:41:36Z Carsop 4 wikitext text/x-wiki the front of blossom photography 98229ea9d37626f591eeff28ed3c6bd0a169e94c Blossom Photography 0 116 295 2023-06-28T09:42:58Z Carsop 4 Created page wikitext text/x-wiki [[File:Blossom photography.png|thumb|435x435px|The front of Blossom Photography.]] Blossom Photography is a professional photo studio in the [[Lake Drive Plaza]] located in [[Orange Blossom Beach]]. [[Category:Map locations]] 497abfcf8016a86f2c8859808677a8e95d72164c Taco Ball 0 44 296 167 2023-06-28T09:44:02Z Carsop 4 linked lake drive plaza wikitext text/x-wiki Taco Ball is an American-based restaurant founded in 1987 by Carlos Jamie Ball (1929-2006) in the city of [[Orange Blossom Beach]]. The restaurant serves a Mexican-inspired taco, and many other variations of the taco. They also sell novelty and speciality items such as mushing. [[File:Tacoball as of December 10th, 2008.png|thumb|Taco Ball as of 12/10/2008]] == History == Taco Ball was founded by Carlos Ball, a Mexican-American entrepreneur who, prior, opened up a small drive-in American styled restaurant named Ball's Drive-In Delight in Panama City, Florida, in 1969. After taking a trip to Galveston, Texas, Ball oversaw a mass line at a family owned Mexican restaurant named Tamaulipas Mexican Cuisine which was famous within in the area for its soft and hard-shelled tacos. === Opening and later expansion of cuisine === After returning from Galveston, and inspired by Tamaulipas, Ball opened Taco Ball in 1987 off Lake Drive in the [[Lake Drive Plaza]] in the city of Orange Blossom Beach. The restaurant had a steady growth in the area, becoming increasingly popular each year. In November 1992, Hernandez Gonzalez Durango pitched the idea of mushing to Ball and later in May of 1993, mushing was introduced onto the menu to alleged fanfare. With increased sales, Taco Ball renovated their restaurant in 1999 and further advertised in the city in 2002. === Death of Ball and change of ownership === On the 10th of March, 2006, Carlos Jamie Ball, the founder of Taco Ball died of a heart attack in his own home in Orange Blossom Beach 8 days after his 77th birthday. His son, Francisco Enrique Ball took ownership of Taco Ball shortly after in April of 2006. Francisco has been the CEO of Taco Ball since. == Menu == The menu of Taco Ball includes various items, however they all relate towards the taco subject, ranging from hard shells to soft shells. === Taco === Regular Taco - A signature Taco Ball item in which could be offered with a soft shell or a hard shell. Deluxe Taco - Taco Ball taco with either a soft shell or hard shell, included with a drink and more toppings such as avocado, beans, rice, or onions. Taco Ball - A ball shaped taco, with the exact same ingredients inside. === Mushing === Mushing - A Taco Ball original, which can be added on with a drink. Deluxe Mushing Meal - Mushing, with an included drink and more ingredients to add to the flavor. Mushing Soufflé - Mushing inside of a fried shell, like soufflé itself. === Other === Taco w/ Mushing - A Taco Ball taco included with mushing as a side. [[Category: Lore]] [[Category:Map locations]] cffe8256ee1eabd7e967f9347815fda9f51f440c File:Discount Tree.png 6 117 297 2023-06-28T09:46:05Z Carsop 4 wikitext text/x-wiki front of discount tree cefb60bce6a8e8237b45e2928161533732b869df Discount Tree 0 118 298 2023-06-28T09:47:15Z Carsop 4 Created Page wikitext text/x-wiki [[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]] Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. Discount Tree is based off of [https://en.wikipedia.org/wiki/Dollar_Tree Dollar Tree] [[Category:Map locations]] ee729298d34b6db2119f1bb77a9dd17dc618e362 File:Thrift-store-WIP.png 6 119 299 2023-06-28T09:49:16Z Carsop 4 wikitext text/x-wiki wip thrift store 36c0a4aff1f9ed8169ab12c5186151d79c59c8d2 Jerry's Thrift & More Clearance Center 0 120 300 2023-06-28T09:50:16Z Carsop 4 created page, update when thrift store is finished wikitext text/x-wiki [[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]] Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. ec1e2ee51e8981e7cafbfb3f89260f2b83fe035a File:Harpmann office3.png 6 121 302 2023-06-28T09:54:04Z Carsop 4 wikitext text/x-wiki the third harpmann & associates office 3f8b4eeacfc3cf448b451f7c3fb8c802f7ec8c25 File:Harpmann ad2.png 6 122 303 2023-06-28T09:57:12Z Carsop 4 wikitext text/x-wiki ad for harpmann & associates f9f5f58434a0cea1d43f2b5a8a77f2e722d925ec File:Harpmann bombing.png 6 123 304 2023-06-28T10:04:38Z Carsop 4 wikitext text/x-wiki the harpmann office after the bombing 0b3d8f93592ae1b67450459b5b8f989c084b18b4 File:Kaleidoscopic records.png 6 124 305 2023-06-28T10:07:16Z Carsop 4 wikitext text/x-wiki kale records ace2c8d9498315529af03a9171e403c938d597e2 Kaleidoscopic Records 0 63 306 209 2023-06-28T10:08:16Z Carsop 4 minor changes, added image wikitext text/x-wiki [[File:Kaleidoscopic records.png|thumb|510x510px|Kaleidoscopic Records]] Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive. b8b68e067f093c2f38a4408c22ed60f9b271362a Kaleidoscopic Records 0 63 307 306 2023-06-28T10:09:22Z Carsop 4 added category wikitext text/x-wiki [[File:Kaleidoscopic records.png|thumb|510x510px|Kaleidoscopic Records]] Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive. [[Category:Map locations]] f9396b07bbafd4f06222296972aa24090f5ab7a4 Jerry's Thrift & More Clearance Center 0 120 308 300 2023-06-28T10:09:59Z Carsop 4 added category wikitext text/x-wiki [[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]] Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 05921f8b015a11821d204ad230869faed248da56 File:Harpmann office2.png 6 125 309 2023-06-28T10:16:53Z Carsop 4 wikitext text/x-wiki the temporary harpmann office 6c879d342ee2fa865005c4288491770c4e9de48b Harpmann & Associates 0 126 310 2023-06-28T10:19:43Z Carsop 4 Created Page wikitext text/x-wiki [[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]] [[File:Harpmann ad2.png|thumb|A billboard for Harpmann & Associates outside [[Kaleidoscopic Records]]]] [[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]]. Harpmann & Associates has had three offices, with the current office in [[Wachalassa]]. [[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]] The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71. [[Category:Map locations]] [[Category:Lore]] d81c57faa5a0c4e78ca2edf82d0fadc10ed7a6a4 312 310 2023-06-28T10:21:45Z Carsop 4 wikitext text/x-wiki [[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]] [[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]]. Harpmann & Associates has had three offices, with the current office in [[Wachalassa]]. [[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]] The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71. [[Category:Map locations]] [[Category:Lore]] fa3dbe067a570f70f04bc967772dad2a4abc380b 315 312 2023-06-28T10:26:22Z Carsop 4 Fixed image wikitext text/x-wiki [[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]] [[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]]. Harpmann & Associates has had three offices, with the current office in [[Wachalassa]]. [[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]] [[File:Harpmann ad2 fixed.png|thumb|510x510px|Ad for Harpmann & Associates outside [[Kaleidoscopic Records]].]] The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71. [[Category:Map locations]] [[Category:Lore]] e654bdc59106f614c34e0d2b80bbd3b2a9834553 File:Harpmann ad2.png 6 122 311 303 2023-06-28T10:20:38Z Carsop 4 Carsop uploaded a new version of [[File:Harpmann ad2.png]] wikitext text/x-wiki ad for harpmann & associates f9f5f58434a0cea1d43f2b5a8a77f2e722d925ec File:Harpmann ad2 fixed.png 6 127 313 2023-06-28T10:22:49Z Carsop 4 wikitext text/x-wiki the old upload refused to work 34ec9ee0643aca764c6d0236c5f6ac1cebe1d797 Discount Tree 0 118 314 298 2023-06-28T10:25:46Z Carsop 4 removed mentions of dollar tree wikitext text/x-wiki [[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]] Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 94c435dc37cdbd0d387316d2e96293e79f2bf585 Orange Blossom Beach 0 33 316 271 2023-06-28T10:27:37Z Carsop 4 linked harpmann & associates wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for [[Harpmann & Associates|southern renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. [[Category:Map locations]] c92e04a9c40ad0b36ce3e2e624ce75fef2530516 317 316 2023-06-28T10:28:35Z Carsop 4 edited link slightly wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a minor city in Florida with a total population of around 33,105. It sits a few miles out of Panama City in Gulf County, Florida. It was established as a small village by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. With it's delicious array of mouth-watering food being spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. [[Category:Map locations]] 1e8e763ffbf65a61e84be6edf6bac098395ed8a4 Charlotte's Neighborhood Market 0 112 318 291 2023-06-28T10:30:33Z Carsop 4 edited wording wikitext text/x-wiki [[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]] Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. The market is the former location for the first office of [[Harpmann & Associates]]. [[Category:Map locations]] 8c5751507fbae5609e71fef67ffd0f1e024f76e7 354 318 2023-06-28T15:47:03Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Charlottes market.png|thumb|508x508px|The front of Charlotte's Market during its grand opening.]] Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. The market is the former location for the first office of [[Harpmann & Associates]]. [[Category:Map locations]] e3c3566327b2587c3391c40cec4a931375cfbca2 File:Filming studio.png 6 128 319 2023-06-28T10:37:15Z Carsop 4 wikitext text/x-wiki filming studio front 38f886856be2c3b4cfd8e40dc22cb9f5eeed5460 Orange Blossom Beach Filming Studio 0 34 320 242 2023-06-28T10:38:00Z Carsop 4 Changed wording, added image wikitext text/x-wiki [[Category:Map_locations]] [[File:Filming studio.png|thumb|510x510px|The front of the Orange Blossom Beach Filming Studio.]] The Orange Blossom Beach Filming Studio is a filming studio located near the [[DuDu]] store in [[Orange Blossom Beach]]. Shows and radio stations based in the filming studio include WOBN-TV Channel 3 News, Prism News, Outburst, and Gulf County Radio. 1bf492d248c52a6f683881c0d57b6df748484e1d File:Penrose beach access.png 6 129 321 2023-06-28T10:41:12Z Carsop 4 wikitext text/x-wiki penrose front fd22734b66cce491d19551381aedb6343c934b79 Penrose Beach Access 0 130 322 2023-06-28T10:43:48Z Carsop 4 Created page wikitext text/x-wiki [[File:Penrose beach access.png|thumb|750x750px|The front of Penrose Beach Access.]] Penrose Beach Access is a plaza located off State Road 30 in [[Orange Blossom Beach]]. Penrose Beach Access is home to several stores: Current stores: * [[Gustav's Antique Store]] * [[Chinese Food Restaurant]] * [[Beachside Breakfast]] [[Category:Map locations]] ef335af16dbcc7d4616cd20ec5e451dedf51934e File:Gustav store front.png 6 131 323 2023-06-28T10:47:02Z Carsop 4 wikitext text/x-wiki front 1b78eb3be0ae3f0e1963a6a98ad72bdc7365d924 File:Gustav store inside.png 6 132 324 2023-06-28T10:48:16Z Carsop 4 wikitext text/x-wiki interior cfa582c0802a0b3e569f3d2854d5eaf59e63193d Gustav's Antique Store 0 133 325 2023-06-28T10:49:09Z Carsop 4 created page wikitext text/x-wiki [[File:Gustav store front.png|thumb|510x510px|The front of Gustav's Antique Store]] [[File:Gustav store inside.png|thumb|510x510px|The interior of Gustav's Antique Store]] Gustav's Antique Store is a small antique store/thrift shop at the [[Penrose Beach Access]] in [[Orange Blossom Beach]]. fd199efbd9ecee1e254a6299a2f68662ac5e60f7 340 325 2023-06-28T11:13:21Z Carsop 4 created page wikitext text/x-wiki [[File:Gustav store front.png|thumb|510x510px|The front of Gustav's Antique Store]] [[File:Gustav store inside.png|thumb|510x510px|The interior of Gustav's Antique Store]] Gustav's Antique Store is a small antique store/thrift shop at the [[Penrose Beach Access]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 532b4951a69f2e039499e1742aac383b9ba2b188 File:Chinese food front.png 6 134 326 2023-06-28T10:51:12Z Carsop 4 wikitext text/x-wiki chinese food front 3f266d883f8348917ee2b8b81b7e0cb46b9d01c5 Chinese Food Restaurant 0 135 327 2023-06-28T10:52:06Z Carsop 4 created page wikitext text/x-wiki [[File:Chinese food front.png|thumb|511x511px|The front of the Chinese Food Restauraunt]] The Chinese Food Restaurant is a grade pending family owned restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]]. [[Category:Map locations]] c7d5d7f10d0b685552391ac2cf6f9d45f621cbd6 355 327 2023-06-28T15:47:13Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Chinese food front.png|thumb|511x511px|The front of the Chinese Food Restauraunt]] The Chinese Food Restaurant is a grade pending family owned restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 1140a78688d507628b307659276adb9ace54cfdd File:Beachside breakfast front.png 6 136 328 2023-06-28T10:54:11Z Carsop 4 wikitext text/x-wiki breakfast_front 3aa2cb26bf3b63b3927c19a3a2dbdee1947a494f Beachside Breakfast 0 137 329 2023-06-28T10:54:43Z Carsop 4 Created Page wikitext text/x-wiki [[File:Beachside breakfast front.png|thumb|510x510px|The front of Beachside Breakfast.]] Beachside Breakfast is a breakfast restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 386ac5b98be872cea32c556fe857dfc0c46f3fae 351 329 2023-06-28T15:46:25Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Beachside breakfast front.png|thumb|510x510px|The front of Beachside Breakfast.]] Beachside Breakfast is a breakfast restaurant at [[Penrose Beach Access]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 2dd47bf148e4d791bc1316479a32c5b2f0ff3313 File:Aidens used cars front.png 6 138 330 2023-06-28T10:57:08Z Carsop 4 wikitext text/x-wiki front 1b78eb3be0ae3f0e1963a6a98ad72bdc7365d924 Aiden's Used Cars 0 139 331 2023-06-28T10:58:06Z Carsop 4 Created page wikitext text/x-wiki [[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]] Aiden's Used Cars is a used car dealership off of state road 30 in [[Orange Blossom Beach]]. 0b487536ad743419f27929338296e9158f7badab 332 331 2023-06-28T10:58:31Z Carsop 4 capitalization error wikitext text/x-wiki [[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]] Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]]. 28f3987e603ef064d0dc9885d53dfa89cbb1c937 333 332 2023-06-28T10:59:39Z Carsop 4 added category wikitext text/x-wiki [[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]] Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]]. [[Category:Map locations]] 4fd5aa8c17b1bb775983ef1255e75ed74f05f16f 349 333 2023-06-28T15:46:01Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Aidens used cars front.png|thumb|510x510px|The front of Aiden's Used Cars.]] Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]]. [[Category:Map locations]] d3bfef4658c0c66a6b532988fe3204251deb2ae0 File:Beltonview outside.png 6 140 334 2023-06-28T11:02:39Z Carsop 4 wikitext text/x-wiki office e6427457497fe0f4f93a7334d2203b8e17ee82df Beltonview Offices 0 141 335 2023-06-28T11:07:57Z Carsop 4 Created Page wikitext text/x-wiki [[File:Beltonview outside.png|thumb|361x361px|The exterior of Beltonview Offices]] Beltonview Offices is a five-story office building with first-floor parking in [[Orange Blossom Beach]]. Beltonview Offices is home to several offices: Current Offices: * [[Hat Studios LLC]] * [[Places Group]] * [[Arenin Accounting Regional Office]] [[Category:Map locations]] d97878b07cddcd02a0a4527beacaccd5a8d2fbd6 352 335 2023-06-28T15:46:35Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Beltonview outside.png|thumb|361x361px|The exterior of Beltonview Offices]] Beltonview Offices is a five-story office building with first-floor parking in [[Orange Blossom Beach]]. Beltonview Offices is home to several offices: Current Offices: * [[Hat Studios LLC]] * [[Places Group]] * [[Arenin Accounting Regional Office]] [[Category:Map locations]] 539e2dcef158a64a6174295b176043cb99c53eb2 File:Hat Studios Front.png 6 142 336 2023-06-28T11:08:58Z Carsop 4 wikitext text/x-wiki hat studios a361984a447f62fdc527f551484aa6919eb6bbfa Hat Studios LLC 0 143 337 2023-06-28T11:09:32Z Carsop 4 created page wikitext text/x-wiki [[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]] Hat Studios LLC is a videogame studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 41f56544e80655f09e9d0e5d70f09c4770f59cef File:Places Group Front.png 6 144 338 2023-06-28T11:11:17Z Carsop 4 wikitext text/x-wiki places group b474e4e401b55e685431d495caa503dd1e528832 Places Group 0 145 339 2023-06-28T11:11:56Z Carsop 4 Created Page wikitext text/x-wiki [[File:Places Group Front.png|thumb|510x510px|The entrance to Places Group.]] Places Group is a office<!-- idk what places group does --> in [[Beltonview Offices]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 83569e7d1e81a343e92a211fc9466607fe65ba1f File:Arenin regional office.png 6 146 341 2023-06-28T11:15:45Z Carsop 4 wikitext text/x-wiki arenin office c154b42dcbda2688b11db8eafc75a46721546a93 Arenin Accounting Regional Office 0 147 342 2023-06-28T11:16:27Z Carsop 4 Created Page wikitext text/x-wiki [[File:Arenin regional office.png|thumb|387x387px|The Entrance to the Arenin Accounting Regional Office.]] The Arenin Accounting Regional Office is the [[Arenin Accounting]] regional office for [[Orange Blossom Beach]] inside [[Beltonview Offices]]. [[Category:Map locations]] 1df415df5b088f60ec7eacc7a5b07a352b705da8 350 342 2023-06-28T15:46:14Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Arenin regional office.png|thumb|387x387px|The Entrance to the Arenin Accounting Regional Office.]] The Arenin Accounting Regional Office is the [[Arenin Accounting]] regional office for [[Orange Blossom Beach]] inside [[Beltonview Offices]]. [[Category:Map locations]] 47edeb78a4f79ee8200dfb41cdbb9e2a6cabe47c File:Monwell apartments outside.png 6 148 343 2023-06-28T11:18:39Z Carsop 4 wikitext text/x-wiki monwell a78e397bba497e6a82da79499560757d8786bab8 Monwell Apartments 0 149 344 2023-06-28T11:19:52Z Carsop 4 Created Page wikitext text/x-wiki [[File:Monwell apartments outside.png|thumb|460x460px|The exterior of Monwell Apartments.]] Monwell Apartments is an apartment complex located in [[Orange Blossom Beach]] outside of [[Wachalassa]] [[Category:Map locations]] 9ab8e67e56e2c933a424766a6003feb69731f2f7 File:Rockson outside.png 6 150 345 2023-06-28T11:21:41Z Carsop 4 wikitext text/x-wiki rockson 98f68a68d58a6679ca2a3bcbfe5318acb1e5a05d Rockson-Bauer Apartment Complex 0 151 346 2023-06-28T11:22:22Z Carsop 4 Created Page wikitext text/x-wiki [[File:Rockson outside.png|thumb|460x460px|The exterior of the Rockson-Bauer Apartment Complex]] The Rockson-Bauer Apartment Complex is an apartment complex in [[Orange Blossom Beach]] next to the [[Orange Blossom Beach Filming Studio]]. [[Category:Map locations]] c1ee0f44952d219b037edc3d50de33d9869d4876 File:Sunset groves.png 6 152 347 2023-06-28T11:24:38Z Carsop 4 wikitext text/x-wiki exterior 8b112ee8cb347858b85531bdadbcd35672f66b7f Sunset Groves Apartment Complex 0 153 348 2023-06-28T11:32:40Z Carsop 4 Created Page wikitext text/x-wiki [[File:Sunset groves.png|thumb|649x649px|The exterior of the Sunset Groves Apartment Complex.]] The Sunset Groves Apartment Complex is an apartment complex in [[Orange Blossom Beach]] off US 71. [[Category:Map locations]] 5d35a131f68107d9f0ebee73b9fed0ebf9e39fe7 Blossom Photography 0 116 353 295 2023-06-28T15:46:50Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Blossom photography.png|thumb|435x435px|The front of Blossom Photography.]] Blossom Photography is a professional photo studio in the [[Lake Drive Plaza]] located in [[Orange Blossom Beach]]. [[Category:Map locations]] f9148189fafa84120192cf3c1cdcceac508963e1 Craig World Cafe 0 108 356 285 2023-06-28T15:47:28Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Cwc.png|thumb|508x508px|The front of the Craig World Cafe.]] The Craig World Cafe is a Cafe in [[Orange Blossom Beach]]. The Craig World Cafe was opened in 2004 and is owned and operated by Craig (last name). [[Category:Map locations]] 7c524539ba4aeb4b6fd79eaefd71b6cf6f82379b Harpmann & Associates 0 126 357 315 2023-06-28T15:47:56Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]] [[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]]. Harpmann & Associates has had three offices, with the current office in [[Wachalassa]]. [[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]] [[File:Harpmann ad2 fixed.png|thumb|510x510px|Ad for Harpmann & Associates outside [[Kaleidoscopic Records]].]] The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71. [[Category:Map locations]] [[Category:Lore]] 8f6180713663fb2b54ee09f1dbbc765d5dbce4c5 378 357 2023-06-28T21:36:32Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Harpmann office3.png|thumb|510x510px|The current Harpmann & Associates office in Wachalassa.]] [[File:Harpmann bombing.png|thumb|510x510px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] Harpmann & Associates is a law firm owned by lawyer Earl Harpmann based in [[Orange Blossom Beach]]. Harpmann & Associates has had three offices, with the current office in [[Wachalassa]]. [[File:Harpmann office2.png|thumb|510x510px|The temporary Harpmann & Associates office off US 71.]] [[File:Harpmann ad2 fixed.png|thumb|510x510px|Ad for Harpmann & Associates outside [[Kaleidoscopic Records]].]] The first Harpmann & Associates office was located in [[Lake Drive Plaza]] but was subsequently bombed by an unknown perpetrator at 6:20 AM on Tuesday June 30th, 2009. There was one death and two injuries in the bombing. The office was replaced with [[Charlotte's Neighborhood Market]]. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off US 71. [[Category:Map locations]] [[Category:Lore]] c4e0f3ee986700b182fd03846146f3a975c5d44c Hat Studios LLC 0 143 358 337 2023-06-28T15:48:15Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]] Hat Studios LLC is a game development studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 52299d8ad5e2c34f89173923496b36aa2f0b08ee 359 358 2023-06-28T15:50:58Z Vorlitix 3 wikitext text/x-wiki {{stub}}''It is being considered on whether to combine this article into [[Beltonview Offices]] or not. ''[[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]] Hat Studios LLC is a game development studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]]. [[Category:Map locations]] cd8e2b287cc1fde889efcca491dedf6120fe3cad 360 359 2023-06-28T15:52:38Z Vorlitix 3 wikitext text/x-wiki {{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not. ''[[File:Hat Studios Front.png|thumb|510x510px|The entrance to Hat Studios LLC.]] Hat Studios LLC is a game development studio located in [[Beltonview Offices]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 76c14334d742819e93cf8b3f47fca4aba72f5002 Italy Pizza 0 110 361 290 2023-06-28T15:53:03Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Italy pizza.png|thumb|508x508px|The front of Italy Pizza.]] Italy Pizza is a pizza place in [[Orange Blossom Beach]]. Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen. Italy Pizza has been shutdown once due to a rat infestation, but has reopened since. [[Category:Map locations]] 3d5eeb3464567fef97c58f712145a93396d2d98d 395 361 2023-06-28T22:46:07Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Italy pizza.png|thumb|508x508px|Italy Pizza on March 17th 2009.]] Italy Pizza is a pizza place in [[Orange Blossom Beach]]. Italy Pizza claims to be (and used to be) authentic, but the pizza is frozen. Italy Pizza has been shutdown once due to a rat infestation, but has reopened since. [[Category:Map locations]] 7d5797dba28e425aea40056c83046bb0723af0d2 Jerry's Thrift & More Clearance Center 0 120 362 308 2023-06-28T15:53:15Z Vorlitix 3 wikitext text/x-wiki {{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not. [[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]] Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] dd138867087bb6c8dc9349a25dab0f099cc2504f 363 362 2023-06-28T15:53:27Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center]] Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 96d1c968bb0e8129a901f5ac60517188e96b5fb7 399 363 2023-06-28T22:54:59Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Thrift-store-WIP.png|thumb|508x508px|The in-progress Jerry's Thrift & More Clearance Center as of January 18th 2009.]] Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] ffa7e56674ba124e1d1d486708d7eae7ebfc5bbe Kaleidoscopic Records 0 63 364 307 2023-06-28T15:53:40Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Kaleidoscopic records.png|thumb|510x510px|Kaleidoscopic Records]] Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive. [[Category:Map locations]] 69167c4f9fefd755d0b9a776bc1f433e7f60e66f Monwell Apartments 0 149 365 344 2023-06-28T15:54:08Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Monwell apartments outside.png|thumb|460x460px|The exterior of Monwell Apartments.]] Monwell Apartments is an apartment complex located in [[Orange Blossom Beach]] outside of [[Wachalassa]] [[Category:Map locations]] ca501bdd1ff6cf2d15fcfdb2f9afef0b98a811e9 Northwest Florida Regional Airport 0 99 366 279 2023-06-28T15:54:21Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Nfra airport.png|thumb|508x508px|The front of the Northwest Florida Regional Airport as seen in-game.]] [[File:Terminal.png|thumb|508x508px|The terminal of the Northwest Florida Regional Airport]] The Northwest Florida Regional Airport is a small airport in [[Orange Blossom Beach]]. The Northwest Florida Regional Airport consists of one terminal, an [https://en.wikipedia.org/wiki/Enterprise_Rent-A-Car Enterprise Rent-A-Car], two hangars, and one runway. The airport has two airlines: [https://en.wikipedia.org/wiki/United_Airlines United Airlines] and [https://en.wikipedia.org/wiki/Delta_Air_Lines Delta Air Lines] along with a closed check-in counter for [https://en.wikipedia.org/wiki/Southwest_Airlines Southwest Airlines]. The airport is across from [[Star Gas]]. [[Category:Map locations]] 4b74913338d86e89e2676792747c19853fe406c0 Orange Blossom Beach Filming Studio 0 34 367 320 2023-06-28T15:54:34Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[Category:Map_locations]] [[File:Filming studio.png|thumb|510x510px|The front of the Orange Blossom Beach Filming Studio.]] The Orange Blossom Beach Filming Studio is a filming studio located near the [[DuDu]] store in [[Orange Blossom Beach]]. Shows and radio stations based in the filming studio include WOBN-TV Channel 3 News, Prism News, Outburst, and Gulf County Radio. 544ba25169cb98fcb03887aa31589557a07f9efe 403 367 2023-06-28T23:12:39Z Carsop 4 wikitext text/x-wiki {{stub}} [[Category:Map_locations]] [[File:Filming studio.png|thumb|510x510px|The front of the Orange Blossom Beach Filming Studio.]] The Orange Blossom Beach Filming Studio is a filming studio next to the [[Rockson-Bauer Apartment Complex]] in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. Shows and radio stations based in the filming studio include WOBN-TV Channel 3 News, Prism News, Outburst, and Gulf County Radio. 25cb2eef7fe6d48d2d7fe222ca744609bbf055ff Places Group 0 145 368 339 2023-06-28T15:54:49Z Vorlitix 3 wikitext text/x-wiki {{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not. [[File:Places Group Front.png|thumb|510x510px|The entrance to Places Group.]] Places Group is a office<!-- idk what places group does --> in [[Beltonview Offices]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 6c23495abbb2c313115c12001dcc0ae7124a1b3c Rockson-Bauer Apartment Complex 0 151 369 346 2023-06-28T15:55:34Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Rockson outside.png|thumb|460x460px|The exterior of the Rockson-Bauer Apartment Complex]] The Rockson-Bauer Apartment Complex is an apartment complex in [[Orange Blossom Beach]] next to the [[Orange Blossom Beach Filming Studio]]. [[Category:Map locations]] 3a36e3a8e6e2a6496555cffdfb8caa77ce64d24a Shiloh Springs 0 98 370 281 2023-06-28T15:55:45Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Shiloh springs sign.png|thumb|550x550px|The entrance to Shiloh Springs]] Shiloh Springs is an [https://en.wikipedia.org/wiki/Unincorporated_area unincorporated community] outside of [[Orange Blossom Beach]]. Shiloh Springs has a population of 59. [[Category:Map locations]] 14e76f6bdaee28c24a4a89e8aaf4e4be312ed446 Soap & Suds Laundromat 0 106 371 283 2023-06-28T15:55:57Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Soap and suds interior.png|thumb|508x508px|The inside of the Soap & Suds Laundromat.]] The Soap & Suds Laundromat is a laundromat located in [[Orange Blossom Beach]]. [[Category:Map locations]] 7fe1bf6262caab172f0c13a6c3fb8ac4ad7a8487 Star Gas 0 101 372 276 2023-06-28T15:56:12Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Star Gas.png|thumb|520x520px|Star Gas as seen in Orange Blossom Beach.]] Star Gas is a gas station located in [[Orange Blossom Beach]] across from the [[Northwest Florida Regional Airport]]. Star Gas is known for having high gas prices to take advantage of people returning rental cars. Star Gas consists of eight gas pumps, a food mart and a certified truck scale. [[Category:Map locations]] 74e3278b0c622bf736e48b24ba17af514245aa59 Sunset Groves Apartment Complex 0 153 373 348 2023-06-28T15:56:22Z Vorlitix 3 wikitext text/x-wiki {{stub}} [[File:Sunset groves.png|thumb|649x649px|The exterior of the Sunset Groves Apartment Complex.]] The Sunset Groves Apartment Complex is an apartment complex in [[Orange Blossom Beach]] off US 71. [[Category:Map locations]] e225ae06c260e6570cd840957878d46058eaaf63 Arenin Accounting Regional Office 0 147 374 350 2023-06-28T15:56:59Z Vorlitix 3 wikitext text/x-wiki {{stub}} ''It is being considered on whether to combine this article into [[Beltonview Offices]] or not. [[File:Arenin regional office.png|thumb|387x387px|The Entrance to the Arenin Accounting Regional Office.]] The Arenin Accounting Regional Office is the [[Arenin Accounting]] regional office for [[Orange Blossom Beach]] inside [[Beltonview Offices]]. [[Category:Map locations]] 247a69ed9d52e084c2eaeacd4c813ed1d82c48d1 File:Cwc.png 6 107 375 284 2023-06-28T19:12:59Z Vorlitix 3 Vorlitix uploaded a new version of [[File:Cwc.png]] wikitext text/x-wiki the craig world cafe 7f32cd9fb857f0ec1757f8be116ade0b0da2acf4 Craig World Cafe 0 108 376 356 2023-06-28T20:18:14Z Vorlitix 3 Huge craig world cafe expansion wow wikitext text/x-wiki {{stub}} [[File:Cwc.png|thumb|276x276px|The Exterior of the Craig World Cafe in Orange Blossom Beach, Florida, on January 11, 2009.]] The Craig World Cafe is a family-run American coffee shop founded by Craig W. Tourbière. Despite being based around being family owned, this has not stopped Craig World Cafe from turning into a close-radius chain. All 4 of the Craig World Cafe locations are located within northwest Florida, with the first Craig World Cafe opening in 2004 in [[Orange Blossom Beach]]. After opening their first location on April 9th, 2004, the chain expanded into [https://en.wikipedia.org/wiki/Apalachicola,_Florida Apalachicola, Florida] in November of the same year after critical acclaim within [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County]. Construction for this new location was finished in 2005, and by late 2007, the chain had already grown to have 3 locations within northwestern Florida. Another Craig World Cafe would be opened within early 2008 in [https://en.wikipedia.org/wiki/Tallahassee,_Florida Tallahassee, Florida]. Tourbière has expressed and announced further plans to expand into other parts of the state, such as [https://en.wikipedia.org/wiki/Pensacola,_Florida Pensacola, Florida], and even [https://en.wikipedia.org/wiki/Mobile,_Alabama Mobile, Alabama]. == Menu == The menu of Craig World Cafe mostly consists of beverages, specifically caffeinated ones such as espressos, cappuccinos, lattes, americanos, and mochas. Craig World Cafe also presents pastries, salads, breakfast items, and deserts along side their drinks. == Locations == === U.S Locations === [[Orange Blossom Beach|Orange Blossom Beach, Florida]] [https://en.wikipedia.org/wiki/Apalachicola,_Florida Apalachicola, Florida] [https://en.wikipedia.org/wiki/Panama_City_Beach,_Florida Panama City, Florida] [https://en.wikipedia.org/wiki/Tallahassee,_Florida Tallahassee, Florida] [[Category:Map locations]] c745a36d5acd6c8f2cd1ba247ea51815eb61dad7 Orange Blossom Beach 0 33 377 317 2023-06-28T20:25:05Z Vorlitix 3 Adjusted some things wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a city in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. The city sits at a total population of around 33,105 as of the [https://en.wikipedia.org/wiki/2000_United_States_census 2000 U.S. census]. It sits a few miles out of [https://en.wikipedia.org/wiki/Panama_City,_Florida Panama City] and was established as an outpost by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. The city is quite notable due to it's delicious array of mouth-watering food spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. Orange Blossom Beach is also the origin of [[Si Cola Inc.|Si Cola Corporation]]. [[Category:Map locations]] ecb0645109fee9c20220382a6fcbd1f3f8b00207 Discount Tree 0 118 379 314 2023-06-28T21:39:19Z Carsop 4 wikitext text/x-wiki {{Stub}}[[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]] Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 8650193f16970062d6fa80ac5046c2595eebc9ef 391 379 2023-06-28T22:37:06Z Carsop 4 wikitext text/x-wiki {{Stub}} [[File:Discount Tree.png|thumb|508x508px|The front of Discount Tree.]] Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 1b3d38bb4ac2ed42bff53e71b679f9f5705d9518 397 391 2023-06-28T22:51:15Z Carsop 4 wikitext text/x-wiki {{Stub}} [[File:Discount Tree.png|thumb|510x510px|The Discount Tree in Orange Blossom Beach on February 7th 2009.]] Discount Tree is a dollar store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] e7462b15892bd219c158fd3410a4cab9ca72ca8a Gustav's Antique Store 0 133 380 340 2023-06-28T21:40:00Z Carsop 4 wikitext text/x-wiki {{Stub}}[[File:Gustav store front.png|thumb|510x510px|The front of Gustav's Antique Store]] [[File:Gustav store inside.png|thumb|510x510px|The interior of Gustav's Antique Store]] Gustav's Antique Store is a small antique store/thrift shop at the [[Penrose Beach Access]] in [[Orange Blossom Beach]]. [[Category:Map locations]] 60a3c13c5cc0311c195ccbe168bc757a9883221b File:Aiden's used cars new.png 6 154 381 2023-06-28T21:55:50Z Carsop 4 wikitext text/x-wiki new c2a6b03f190dfb2b4aa91f8af8d477a9bc3401dc File:Lake drive plaza.png 6 113 382 292 2023-06-28T22:05:23Z Carsop 4 Carsop uploaded a new version of [[File:Lake drive plaza.png]] wikitext text/x-wiki the lake drive plaza 5f9681edcb901da330a6c3e7049e429c4882e9cb File:Charlottes market.png 6 111 383 288 2023-06-28T22:06:50Z Carsop 4 Carsop uploaded a new version of [[File:Charlottes market.png]] wikitext text/x-wiki the front of charlotte's market e99f6c2d12c4609e2420d324a26f8284435e932e Charlotte's Neighborhood Market 0 112 384 354 2023-06-28T22:09:54Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Charlottes market.png|thumb|507x507px|The front of Charlotte's Market during its grand opening.]] Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. The market is the former location for the first office of [[Harpmann & Associates]]. [[Category:Map locations]] 21642280bc5c9900ca3dc7cd16d4aab854551bbf 398 384 2023-06-28T22:52:41Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Charlottes market.png|thumb|507x507px|The front of Charlotte's Market during its grand opening on May 26th 2009.]] Charlotte's Neighborhood Market is a small food mart in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. The market is the former location for the first office of [[Harpmann & Associates]]. [[Category:Map locations]] 31f4e17900870ecc361e4841cc7d2253be14f5bf Lake Drive Plaza 0 114 385 301 2023-06-28T22:11:17Z Carsop 4 wikitext text/x-wiki [[File:Lake drive plaza.png|thumb|755x755px|The Lake Drive Plaza strip mall.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]] Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. The Lake Drive Plaza has been home to several stores: Current Stores: * [[Charlotte's Neighborhood Market]] * [[Blossom Photography]] * [[Taco Ball]] * [[Discount Tree]] * [[Jerry's Thrift & More Clearance Center]] Former Stores: * [[Harpmann & Associates]] [[Category:Map locations]] 6ab064584bf5e99c621fbeff64c3dcc64c90cec0 386 385 2023-06-28T22:15:09Z Carsop 4 wikitext text/x-wiki [[File:Lake drive plaza.png|thumb|700x700px|The Lake Drive Plaza strip mall.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]] Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. The Lake Drive Plaza has been home to several stores: Current Stores: * [[Charlotte's Neighborhood Market]] * [[Blossom Photography]] * [[Taco Ball]] * [[Discount Tree]] * [[Jerry's Thrift & More Clearance Center]] Former Stores: * [[Harpmann & Associates]] [[Category:Map locations]] b8f17f097f50faef55b1dbd82296bd762827cb9a 394 386 2023-06-28T22:44:31Z Carsop 4 wikitext text/x-wiki [[File:Lake drive plaza.png|thumb|700x700px|The Lake Drive Plaza strip mall on May 5th 2009.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]] Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. The Lake Drive Plaza has been home to several stores: Current Stores: * [[Charlotte's Neighborhood Market]] * [[Blossom Photography]] * [[Taco Ball]] * [[Discount Tree]] * [[Jerry's Thrift & More Clearance Center]] Former Stores: * [[Harpmann & Associates]] [[Category:Map locations]] 9945d098c87e1c7d646482629512710d10df7f65 396 394 2023-06-28T22:49:16Z Carsop 4 wikitext text/x-wiki [[File:Lake drive plaza.png|thumb|700x700px|The Lake Drive Plaza strip mall on May 5th 2009.<!-- Image must be updated when Jerry's Thrift & More Clearance Center is finished. -->]] Lake Drive Plaza is a strip mall located off of Lake Drive in [[Orange Blossom Beach]]. Lake Drive Plaza was opened on September 26th 1968. The Lake Drive Plaza has been home to several stores: Current Stores: * [[Charlotte's Neighborhood Market]] * [[Blossom Photography]] * [[Taco Ball]] * [[Discount Tree]] * [[Jerry's Thrift & More Clearance Center]] Former Stores: * [[Harpmann & Associates]] [[Category:Map locations]] a69ce7e1adbbc099472024ad6ba81d307966bbfe Aiden's Used Cars 0 139 387 349 2023-06-28T22:16:28Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Aiden's used cars new.png|thumb|510x510px|The front of Aiden's Used Cars as of April 5th 2009.]] Aiden's Used Cars is a used car dealership off of State Road 30 in [[Orange Blossom Beach]]. Aiden's Used Cars was opened in 2005 by Aiden Jones. [[Category:Map locations]] 0c5b79fb56cf5ce98ac7b9c4bfa2d867735a4d1f File:Blossom photography.png 6 115 388 294 2023-06-28T22:18:34Z Carsop 4 Carsop uploaded a new version of [[File:Blossom photography.png]] wikitext text/x-wiki the front of blossom photography 98229ea9d37626f591eeff28ed3c6bd0a169e94c Blossom Photography 0 116 389 353 2023-06-28T22:21:23Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Blossom photography.png|thumb|434x434px|The front of Blossom Photography.]] Blossom Photography is a professional photo studio in the [[Lake Drive Plaza]] located in [[Orange Blossom Beach]]. [[Category:Map locations]] 53c86f569d17705325a5df79089aec442d210d52 File:Discount Tree.png 6 117 390 297 2023-06-28T22:22:42Z Carsop 4 Carsop uploaded a new version of [[File:Discount Tree.png]] wikitext text/x-wiki front of discount tree cefb60bce6a8e8237b45e2928161533732b869df File:Thrift-store-WIP.png 6 119 392 299 2023-06-28T22:40:18Z Carsop 4 Carsop uploaded a new version of [[File:Thrift-store-WIP.png]] wikitext text/x-wiki wip thrift store 36c0a4aff1f9ed8169ab12c5186151d79c59c8d2 File:Italy pizza.png 6 109 393 286 2023-06-28T22:43:47Z Carsop 4 Carsop uploaded a new version of [[File:Italy pizza.png]] wikitext text/x-wiki italy pizza 2c4c1ab65bae70b673ffa6e0b08fb979f75946a6 File:Dudu exterior.png 6 155 400 2023-06-28T23:03:31Z Carsop 4 wikitext text/x-wiki dudu exterior dd492bd7d51e437e0b579313d02f9aafaf3f2569 File:Dudu interior.png 6 156 401 2023-06-28T23:06:27Z Carsop 4 wikitext text/x-wiki dudu interior e84522805a37410029dbffc7ca10b90289ecf81a DuDu 0 157 402 2023-06-28T23:10:06Z Carsop 4 created page wikitext text/x-wiki {{Stub}} [[File:Dudu exterior.png|thumb|510x510px|The DuDu store in Orange Blossom Beach on March 23rd 2009.]] [[File:Dudu interior.png|thumb|510x510px|The interior of the DuDu store in Orange Blossom Beach.]] DuDu is a Chinese international electronics company created by Stove Jeebs. DuDu is based in Yantai, China. DuDu has a store in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Publix]] and [[Shell]] off Lake Drive. DuDu is known for creating cheap, low-quality electronic devices. List of electronic devices created by DuDu: * Action Phone 1 * Action Phone 2G * Unnamed Laptop * Bravery TV * Unnamed Wi-Fi Router * <s>The iToilet</s> 8dd1c6725de969144b9907d7ef006b381deb47e6 406 402 2023-06-28T23:25:29Z Carsop 4 added category wikitext text/x-wiki {{Stub}} [[File:Dudu exterior.png|thumb|510x510px|The DuDu store in Orange Blossom Beach on March 23rd 2009.]] [[File:Dudu interior.png|thumb|510x510px|The interior of the DuDu store in Orange Blossom Beach.]] DuDu is a Chinese international electronics company created by Stove Jeebs. DuDu is based in Yantai, China. DuDu has a store in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Publix]] and [[Shell]] off Lake Drive. DuDu is known for creating cheap, low-quality electronic devices. List of electronic devices created by DuDu: * Action Phone 1 * Action Phone 2G * Unnamed Laptop * Bravery TV * Unnamed Wi-Fi Router * <s>The iToilet</s> [[Category:Map locations]] 14cc0a14dc8a8e63067e9e3eddf4d9b903ed73a5 File:City dump.png 6 158 404 2023-06-28T23:17:26Z Carsop 4 wikitext text/x-wiki the dump yeah 38dc76964a4bea690229aa51065ac36e70f51d77 Orange Blossom City Dump 0 159 405 2023-06-28T23:21:02Z Carsop 4 Created Page wikitext text/x-wiki {{Stub}} [[File:City dump.png|thumb|750x750px|The back of the Orange Blossom City Dump.]] The Orange Blossom City Dump is the landfill/junkyard for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The dump is located in [[Wachalassa]] next to [[Monwell Apartments]]. aed13cf850068188b1030933f6193b387861b0b0 Orange Blossom City Dump 0 159 407 405 2023-06-28T23:25:48Z Carsop 4 added category wikitext text/x-wiki {{Stub}} [[File:City dump.png|thumb|750x750px|The back of the Orange Blossom City Dump.]] The Orange Blossom City Dump is the landfill/junkyard for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The dump is located in [[Wachalassa]] next to [[Monwell Apartments]]. [[Category:Map locations]] 79f32e5417668e790f685ed503c6e11c6fb0046e File:Self storage.png 6 160 408 2023-06-28T23:28:51Z Carsop 4 wikitext text/x-wiki self stroage d90b1ca0f62bdb88f0b6be5a444946df28243a7d Orange Blossom Beach Self Storage 0 161 409 2023-06-28T23:39:49Z Carsop 4 Created Page wikitext text/x-wiki {{Stub}} [[File:Self storage.png|thumb|750x750px|Orange Blossom Beach Self Storage as of May 2nd, 2009.]] Orange Blossom Beach Self Storage is a Self Storage building in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Orange Blossom Beach Community Center]] off US 71. There are 37 storage units, five of which are XL (one of which is the office for the self storage), seven are refrigerated (one is refrigerated and XL). 12/37 storage units are occupied. [[Category:Map locations]] 5895947a6edeae452c86f07a473b45cf5596b3d8 414 409 2023-06-28T23:57:55Z Vorlitix 3 wikitext text/x-wiki {{Stub}} [[File:Self storage.png|thumb|530x530px|Orange Blossom Beach Self Storage as of May 2nd, 2009.]] Orange Blossom Beach Self Storage is a Self Storage building in [[Orange Blossom Beach|Orange Blossom Beach, Florida]] next to the [[Orange Blossom Beach Community Center]] off US 71. There are 37 storage units, five of which are XL (one of which is the office for the self storage), seven are refrigerated (one is refrigerated and XL). 12/37 storage units are occupied. [[Category:Map locations]] 2f5e1ea5d4966d0f85586c253d7b0a32ed426da9 File:Community center exterior.png 6 162 410 2023-06-28T23:47:58Z Carsop 4 wikitext text/x-wiki exterior 8b112ee8cb347858b85531bdadbcd35672f66b7f Orange Blossom Beach Community Center 0 163 411 2023-06-28T23:49:57Z Carsop 4 created page, will add more soon wikitext text/x-wiki [[File:Community center exterior.png|thumb|750x750px|The outside of the Orange Blossom Beach Community Center on January 12th 2009.]] The Orange Blossom Beach Community Center is the community center for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The community center is off US 71 and is next to the [[7-Eleven]] and [[Orange Blossom Beach Self Storage]]. [[Category:Map locations]] 2288f0ed860c7282b1749ba11336a1e1d65e11fa 416 411 2023-06-29T00:01:37Z Carsop 4 finished page wikitext text/x-wiki {{Stub}}[[File:Community center exterior.png|thumb|750x750px|The outside of the Orange Blossom Beach Community Center on January 12th 2009.]] The Orange Blossom Beach Community Center is the community center for [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. The community center is off US 71 and is next to the [[7-Eleven]], [[Orange Blossom Beach Self Storage]], and the [[Orange Blossom Beach City Park]]. The community center consists of several commons rooms, a meeting room, several offices, a stage room, the Orange Blossom Beach Public Library, a gym, and several other miscellaneous rooms. Various murals are present on the exterior walls of the community center. [[Category:Map locations]] a1aa515401e95584f43a15264cef04148cc081a7 Orange Blossom Beach Public Library 0 164 412 2023-06-28T23:52:02Z Carsop 4 created page, its just a redirect wikitext text/x-wiki #REDIRECT [[Orange Blossom Beach Community Center]] 536eeb973fbebb6cdb6a26cf3302719d071eea89 Jerry's Thrift & More Clearance Center 0 120 413 399 2023-06-28T23:53:15Z Carsop 4 wikitext text/x-wiki {{stub}} [[File:Thrift-store-WIP.png|thumb|600x600px|The in-progress Jerry's Thrift & More Clearance Center as of January 18th 2009.]] Jerry's Thrift & More Clearance Center is a WIP thrift store in the [[Lake Drive Plaza]] in [[Orange Blossom Beach]]. [[Category:Map locations]] cb71bab997d1cb623b1736d5ffdd3d31cdeaedf2 Template:Gallery 10 165 415 2023-06-29T00:01:28Z Vorlitix 3 Created page with "{{#invoke:Gallery|gallery}}<noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {{#invoke:Gallery|gallery}}<noinclude>{{Documentation}}</noinclude> ac1b2ae340316660e59bfba33410727bfd0fad32 Module:Gallery 828 166 417 2023-06-29T00:02:24Z Vorlitix 3 Created page with "-- This module implements {{gallery}} local p = {} local templatestyles = 'Module:Gallery/styles.css' local yesno = require('Module:Yesno') local function trim(s) return mw.ustring.gsub(mw.ustring.gsub(s, '%s', ' '), '^%s*(.-)%s*$', '%1') end local tracking, preview local function checkarg(k,v) if k and type(k) == 'string' then if k == 'align' or k == 'state' or k == 'style' or k == 'title' or k == 'width' or k == 'height' or k == 'lines' or k == 'whitebg' or..." Scribunto text/plain -- This module implements {{gallery}} local p = {} local templatestyles = 'Module:Gallery/styles.css' local yesno = require('Module:Yesno') local function trim(s) return mw.ustring.gsub(mw.ustring.gsub(s, '%s', ' '), '^%s*(.-)%s*$', '%1') end local tracking, preview local function checkarg(k,v) if k and type(k) == 'string' then if k == 'align' or k == 'state' or k == 'style' or k == 'title' or k == 'width' or k == 'height' or k == 'lines' or k == 'whitebg' or k == 'mode' or k == 'footer' or k == 'perrow' or k == 'noborder' or k:match('^alt%d+$') or k:match('^%d+$') then -- valid elseif k == 'captionstyle' then if not v:match('^text%-align%s*:%s*center[;%s]*$') then table.insert(tracking, '[[Category:Pages using gallery with the captionstyle parameter]]') end else -- invalid local vlen = mw.ustring.len(k) k = mw.ustring.sub(k, 1, (vlen < 25) and vlen or 25) k = mw.ustring.gsub(k, '[^%w\-_ ]', '?') table.insert(tracking, '[[Category:Pages using gallery with unknown parameters|' .. k .. ']]') table.insert(preview, '"' .. k .. '"') end end end function p.gallery(frame) -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. local origArgs = (type(frame.getParent) == 'function') and frame:getParent().args or frame -- ParserFunctions considers the empty string to be false, so to preserve the previous -- behavior of {{gallery}}, change any empty arguments to nil, so Lua will consider -- them false too. local args = {} tracking, preview = {}, {} for k, v in pairs(origArgs) do if v ~= '' then args[k] = v checkarg(k,v) end end if (args.mode or '') == 'packed' and (args.align or '') == '' then args.align = 'center' end local tbl = mw.html.create('div') tbl:addClass('mod-gallery') if args.state then tbl :addClass('mod-gallery-collapsible') :addClass('collapsible') :addClass(args.state) end if args.style then tbl:cssText(args.style) else tbl:addClass('mod-gallery-default') end if args.align then tbl:addClass('mod-gallery-' .. args.align:lower()) end if args.title then tbl:tag('div') :addClass('title') :tag('div') :wikitext(args.title) end local gargs = {} gargs['class'] = 'nochecker' .. (args.noborder and '' or ' bordered-images') gargs['widths'] = tonumber(args.width) or 180 gargs['heights'] = tonumber(args.height) or 180 gargs['style'] = args.captionstyle gargs['perrow'] = args.perrow gargs['mode'] = args.mode if yesno(args.whitebg or 'yes') then gargs['class'] = gargs['class'] .. ' whitebg' end local gallery = {} local imageCount = math.ceil(#args / 2) for i = 1, imageCount do local img = trim(args[i*2 - 1] or '') local caption = trim(args[i*2] or '') local alt = trim(args['alt' .. i] or '') if img ~= '' then table.insert(gallery, img .. (alt ~= '' and ('|alt=' .. alt) or '') .. '|' .. caption ) end end tbl:tag('div') :addClass('main') :tag('div') :wikitext( frame:extensionTag{ name = 'gallery', content = '\n' .. table.concat(gallery,'\n'), args = gargs} ) if args.footer then tbl:tag('div') :addClass('footer') :tag('div') :wikitext(args.footer) end local trackstr = (#tracking > 0) and table.concat(tracking, '') or '' if #preview > 0 then trackstr = require('Module:If preview')._warning({ 'Unknown parameters ' .. table.concat(preview, '; ') .. '.' }) .. trackstr end return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(tbl) .. trackstr end return p c01c36536c14aae6ffec0d558b9fa68ffe118d01 Module:Gallery/doc 828 167 418 2023-06-29T00:02:43Z Vorlitix 3 Created page with "{{Module rating|protected}} {{Lua|Module:Yesno}} {{high-use}} {{uses TemplateStyles|Module:Gallery/styles.css}} Implements {{tl|gallery}} == Tracking categories == * {{clc|Pages using gallery with the captionstyle parameter}} * {{clc|Pages using gallery with unknown parameters}}" wikitext text/x-wiki {{Module rating|protected}} {{Lua|Module:Yesno}} {{high-use}} {{uses TemplateStyles|Module:Gallery/styles.css}} Implements {{tl|gallery}} == Tracking categories == * {{clc|Pages using gallery with the captionstyle parameter}} * {{clc|Pages using gallery with unknown parameters}} ee021d4fc9edbcf343bc2e014aa75de7df089855 Module:Gallery/styles.css 828 168 419 2023-06-29T00:03:48Z Vorlitix 3 Created page with "/* {{pp-template}} */ @media all and (max-width: 720px) { .mod-gallery { width: 100% !important; } } .mod-gallery { display: table; } .mod-gallery-default { background: transparent; margin-top: 0.3em; } .mod-gallery-center { margin-left: auto; margin-right: auto; } .mod-gallery-left { float: left; } .mod-gallery-right { float: right; } .mod-gallery-none { float: none; } .mod-gallery-collapsible { width: 100%; } .mod-gallery .title, .mod-gallery .main..." sanitized-css text/css /* {{pp-template}} */ @media all and (max-width: 720px) { .mod-gallery { width: 100% !important; } } .mod-gallery { display: table; } .mod-gallery-default { background: transparent; margin-top: 0.3em; } .mod-gallery-center { margin-left: auto; margin-right: auto; } .mod-gallery-left { float: left; } .mod-gallery-right { float: right; } .mod-gallery-none { float: none; } .mod-gallery-collapsible { width: 100%; } .mod-gallery .title, .mod-gallery .main, .mod-gallery .footer { display: table-row; } .mod-gallery .title > div { display: table-cell; padding: 0.2em 0 0.6em 1.6em; text-align: center; font-weight: bold; } .mod-gallery .main > div { display: table-cell; } .mod-gallery .gallery { line-height: 1.35em; } .mod-gallery .footer > div { display: table-cell; padding: 0.2em 0 0.6em 1.6em; text-align: right; font-size: 80%; line-height: 1em; } .mod-gallery .title > div *, .mod-gallery .footer > div * { overflow: visible; } .mod-gallery .gallerybox img { background: none !important; } .mod-gallery .bordered-images .thumb img { border: solid #eaecf0 1px; } .mod-gallery .whitebg .thumb { background: #fff !important; } 4b6a0011f8da09725a063e4bf40d3349cafd6c02 Template:Gallery/doc 10 169 420 2023-06-29T00:04:18Z Vorlitix 3 Created page with "{{Module rating|protected}} {{Lua|Module:Yesno}} {{high-use}} {{uses TemplateStyles|Module:Gallery/styles.css}} Implements {{tl|gallery}} == Tracking categories == * {{clc|Pages using gallery with the captionstyle parameter}} * {{clc|Pages using gallery with unknown parameters}}" wikitext text/x-wiki {{Module rating|protected}} {{Lua|Module:Yesno}} {{high-use}} {{uses TemplateStyles|Module:Gallery/styles.css}} Implements {{tl|gallery}} == Tracking categories == * {{clc|Pages using gallery with the captionstyle parameter}} * {{clc|Pages using gallery with unknown parameters}} ee021d4fc9edbcf343bc2e014aa75de7df089855 Template:Module rating 10 170 421 2023-06-29T00:04:49Z Vorlitix 3 Created page with "<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = File:Alpha lowerca..." wikitext text/x-wiki <includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]] | beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]] | release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]] | protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]] | semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]] }} | style = | textstyle = | text = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }} }} | alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }} }} | beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }} }} | release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }} }} | protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | #default = {{error|Module rating is invalid or not specified.}} }} }}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude> {{module rating|release|nocat=true|demospace=module}} {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata. --> </noinclude> bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc Template:Lua 10 171 422 2023-06-29T00:05:10Z Vorlitix 3 Created page with "<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Lua banner 10 172 423 2023-06-29T00:05:40Z Vorlitix 3 Created page with "-- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args)..." wikitext text/x-wiki -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 03ec1b34a40121efc562c0c64a67ebbf57d56dff Module:Lua banner 828 173 424 2023-06-29T00:06:19Z Vorlitix 3 Created page with "-- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args)..." Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Templates based on the String Lua module', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module' } category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p 03ec1b34a40121efc562c0c64a67ebbf57d56dff Module:List 828 174 425 2023-06-29T00:07:06Z Vorlitix 3 Created page with "local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = ''..." Scribunto text/plain local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes and TemplateStyles data.classes = {} data.templatestyles = '' if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Hlist/styles.css' } } elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') data.templatestyles = mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Plainlist/styles.css' } } end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for _, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for _, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for _, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return data.templatestyles .. tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 7a4f36a6e9cd56370bdd8207d23694124821dc1a Module:List/doc 828 175 426 2023-06-29T00:07:29Z Vorlitix 3 Created page with "{{used in system|in [[MediaWiki:Citethispage-content]]}} {{module rating|protected}} {{Lua|Module:TableTools|Module:Arguments}} {{Uses TemplateStyles|Template:Plainlist/styles.css|Template:Hlist/styles.css}} This module outputs various kinds of lists. At present, it supports bulleted lists, unbulleted lists, horizontal lists, ordered lists (numbered or alphabetical), and horizontal ordered lists. It allows for easy css styling of the list or of the individual list items..." wikitext text/x-wiki {{used in system|in [[MediaWiki:Citethispage-content]]}} {{module rating|protected}} {{Lua|Module:TableTools|Module:Arguments}} {{Uses TemplateStyles|Template:Plainlist/styles.css|Template:Hlist/styles.css}} This module outputs various kinds of lists. At present, it supports bulleted lists, unbulleted lists, horizontal lists, ordered lists (numbered or alphabetical), and horizontal ordered lists. It allows for easy css styling of the list or of the individual list items. == Usage == === Quick usage === {{pre|<nowiki>{{</nowiki>#invoke:list<nowiki>|</nowiki>''function''<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...<nowiki>}}</nowiki>}} === All parameters === {{pre| <nowiki>{{</nowiki>#invoke:list<nowiki>|</nowiki>''function'' <nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>... <nowiki>|start = </nowiki>''start number for ordered lists'' <nowiki>|type = </nowiki>''type of numbering for ordered lists'' <nowiki>|list_style_type = </nowiki>''type of marker for ordered lists (uses CSS)'' <nowiki>|class = </nowiki>''class'' <nowiki>|style = </nowiki>''style'' <nowiki>|list_style = </nowiki>''style for the list'' <nowiki>|item_style = </nowiki>''style for all list items'' <nowiki>|item1_style = </nowiki>''style for the first list item''<nowiki> |item2_style = </nowiki>''style for the second list item''<nowiki> |</nowiki>... <nowiki>|item1_value = </nowiki>''value for the first list item''<nowiki> |item2_value = </nowiki>''value for the second list item''<nowiki> |</nowiki>... <nowiki>|indent = </nowiki>''indent for horizontal lists'' <nowiki>}}</nowiki> }} === Arguments passed from parent template === {{pre|<nowiki>{{</nowiki>#invoke:list<nowiki>|</nowiki>''function''<nowiki>}}</nowiki>}} === Functions === {| class="wikitable" |- ! Function name ! Produces ! Example output ! Template using the function |- | <code>bulleted</code> | Bulleted lists | {{#invoke:list|bulleted|First item|Second item|Third item}} | {{tlx|bulleted list}} |- | <code>unbulleted</code> | Unbulleted lists | {{#invoke:list|unbulleted|First item|Second item|Third item}} | {{tlx|unbulleted list}} |- | <code>horizontal</code> | Horizontal bulleted lists | {{#invoke:list|horizontal|First item|Second item|Third item}} | {{tlx|hlist}} |- | <code>ordered</code> | Ordered lists (numbered lists and alphabetical lists) | {{#invoke:list|ordered|First item|Second item|Third item}} | {{tlx|ordered list}} |- | <code>horizontal_ordered</code> | Horizontal ordered lists | {{#invoke:list|horizontal_ordered|First item|Second item|Third item}} | {{tlx|horizontal ordered list}} |} == Parameters == * Positional parameters (<code>1</code>, <code>2</code>, <code>3</code>...) - these are the list items. If no list items are present, the module will output nothing. * <code>start</code> - sets the start item for ordered lists. This can be a start number for numbered lists, or a start letter for alphabetical lists. Horizontal ordered lists only support numbers. * <code>type</code> - the type of marker used in ordered lists. Possible values are "1" for numbers (the default), "A" for uppercase letters, "a" for lowercase letters, "I" for uppercase [[Roman numerals]], and "i" for lowercase Roman numerals. Not supported in horizontal ordered lists. See also the <code>list_style_type</code> parameter. * <code>list_style_type</code> - the type of marker used in ordered lists. This uses CSS styling, and has more types available than the <code>type</code> parameter, which uses an [[html attribute]]. Possible values are listed at [https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type MDN's list-style-type page]. Support may vary by browser. <code>list-style-type</code> is an alias for this parameter. * <code>class</code> - a custom class for the {{tag|div}} tags surrounding the list, e.g. <code>plainlinks</code>. * <code>style</code> - a custom css style for the {{tag|div}} tags surrounding the list, e.g. <code>font-size: 90%;</code>. * <code>list_style</code> - a custom css style for the list itself. The format is the same as for the {{para|style}} parameter. * <code>item_style</code> - a custom css style for all of the list items (the {{tag|li}} tags). The format is the same as for the {{para|style}} parameter. * <code>item1_style</code>, <code>item2_style</code>, <code>item3_style</code>... - custom css styles for each of the list items. The format is the same as for the {{para|style}} parameter. * <code>item1_value</code>, <code>item2_value</code>, <code>item3_value</code>... - custom value for the given list item. List items following the one given will increment from the specified value. The value should be a positive integer. (Note that this option only has an effect on ordered lists.) * <code>indent</code> - this parameter indents the list, for horizontal and horizontal ordered lists only. The value must be a number, e.g. <code>2</code>. The indent is calculated in [[Em (typography)|em]], and is 1.6 times the value specified. If no indent is specified, the default is zero. == Examples == === Bulleted lists === {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{#invoke:list|bulleted|First item|Second item|Third item}}</nowiki></code> | {{#invoke:list|bulleted|First item|Second item|Third item}} |- | <code><nowiki>{{#invoke:list|bulleted|First item|Second item|Third item|item_style=color:blue;}}</nowiki></code> | {{#invoke:list|bulleted|First item|Second item|Third item|item_style=color:blue;}} |- | <code><nowiki>{{#invoke:list|bulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}</nowiki></code> | {{#invoke:list|bulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}} |} === Unbulleted lists === {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{#invoke:list|unbulleted|First item|Second item|Third item}}</nowiki></code> | {{#invoke:list|unbulleted|First item|Second item|Third item}} |- | <code><nowiki>{{#invoke:list|unbulleted|First item|Second item|Third item|item_style=color:blue;}}</nowiki></code> | {{#invoke:list|unbulleted|First item|Second item|Third item|item_style=color:blue;}} |- | <code><nowiki>{{#invoke:list|unbulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}}</nowiki></code> | {{#invoke:list|unbulleted|First item|Second item|Third item|item1_style=background-color:yellow;|item2_style=background-color:silver;}} |} === Horizontal lists === {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{#invoke:list|horizontal|First item|Second item|Third item}}</nowiki></code> | {{#invoke:list|horizontal|First item|Second item|Third item}} |- | <code><nowiki>{{#invoke:list|horizontal|First item|Second item|Third item|indent=2}}</nowiki></code> | {{#invoke:list|horizontal|First item|Second item|Third item|indent=2}} |} === Ordered lists === {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item}}</nowiki></code> | {{#invoke:list|ordered|First item|Second item|Third item}} |- | <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item|start=3}}</nowiki></code> | {{#invoke:list|ordered|First item|Second item|Third item|start=3}} |- | Lowercase [[Roman numerals]]: <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item|type=i}}</nowiki></code> | {{#invoke:list|ordered|First item|Second item|Third item|type=i}} |- | Lowercase [[Greek alphabet]]: <code><nowiki>{{#invoke:list|ordered|First item|Second item|Third item|list_style_type=lower-greek}}</nowiki></code> | {{#invoke:list|ordered|First item|Second item|Third item|list_style_type=lower-greek}} |} === Horizontal ordered lists === {| class="wikitable" ! Code !! Result |- | <code><nowiki>{{#invoke:list|horizontal_ordered|First item|Second item|Third item}}</nowiki></code> | {{#invoke:list|horizontal_ordered|First item|Second item|Third item}} |- | <code><nowiki>{{#invoke:list|horizontal_ordered|First item|Second item|Third item|start=3}}</nowiki></code> | {{#invoke:list|horizontal_ordered|First item|Second item|Third item|start=3}} |- | <code><nowiki>{{#invoke:list|horizontal_ordered|First item|Second item|Third item|indent=2}}</nowiki></code> | {{#invoke:list|horizontal_ordered|First item|Second item|Third item|indent=2}} |} == Tracking/maintenance category == * {{clc|List templates with deprecated parameters}} == See also == * [[Module:Separated entries]] <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | | <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Modules that add a tracking category]] }}</includeonly> b4031c1ae9765885d3ce8d96c78c8557f6887aa1 Module:Tabletools/doc 828 177 428 2023-06-29T00:08:35Z Vorlitix 3 Created page with "{{used in system}} {{module rating|protected}} {{lua|Module:Exponential search|noprotcat=yes}} This module includes a number of functions for dealing with Lua tables. It is a meta-module, meant to be called from other Lua modules, and should not be called directly from #invoke. == Loading the module == To use any of the functions, first you must load the module. <syntaxhighlight lang="lua"> local TableTools = require('Module:TableTools') </syntaxhighlight> == isPosit..." wikitext text/x-wiki {{used in system}} {{module rating|protected}} {{lua|Module:Exponential search|noprotcat=yes}} This module includes a number of functions for dealing with Lua tables. It is a meta-module, meant to be called from other Lua modules, and should not be called directly from #invoke. == Loading the module == To use any of the functions, first you must load the module. <syntaxhighlight lang="lua"> local TableTools = require('Module:TableTools') </syntaxhighlight> == isPositiveInteger == <syntaxhighlight lang="lua"> TableTools.isPositiveInteger(value) </syntaxhighlight> Returns <code>true</code> if <code>''value''</code> is a positive integer, and <code>false</code> if not. Although it doesn't operate on tables, it is included here as it is useful for determining whether a given table key is in the array part or the hash part of a table. == isNan == <syntaxhighlight lang="lua"> TableTools.isNan(value) </syntaxhighlight> Returns <code>true</code> if <code>''value''</code> is a [[NaN]] value, and <code>false</code> if not. Although it doesn't operate on tables, it is included here as it is useful for determining whether a value can be a valid table key. (Lua will generate an error if a NaN value is used as a table key.) == shallowClone == <syntaxhighlight lang="lua"> TableTools.shallowClone(t) </syntaxhighlight> Returns a clone of a table. The value returned is a new table, but all subtables and functions are shared. Metamethods are respected, but the returned table will have no metatable of its own. If you want to make a new table with no shared subtables and with metatables transferred, you can use <code>[[mw:Extension:Scribunto/Lua reference manual#mw.clone|mw.clone]]</code> instead. If you want to make a new table with no shared subtables and without metatables transferred, use <code>[[#deepCopy|deepCopy]]</code> with the <code>noMetatable</code> option. == removeDuplicates == <syntaxhighlight lang="lua"> TableTools.removeDuplicates(t) </syntaxhighlight> Removes duplicate values from an array. This function is only designed to work with standard arrays: keys that are not positive integers are ignored, as are all values after the first <code>nil</code> value. (For arrays containing <code>nil</code> values, you can use <code>[[#compressSparseArray|compressSparseArray]]</code> first.) The function tries to preserve the order of the array: the earliest non-unique value is kept, and all subsequent duplicate values are removed. For example, for the table {{code|code={5, 4, 4, 3, 4, 2, 2, 1}|lang=lua}} <code>removeDuplicates</code> will return {{code|code={5, 4, 3, 2, 1}|lang=lua}}. == numKeys == <syntaxhighlight lang="lua"> TableTools.numKeys(t) </syntaxhighlight> Takes a table <code>''t''</code> and returns an array containing the numbers of any positive integer keys that have non-nil values, sorted in numerical order. For example, for the table {{code|code={'foo', nil, 'bar', 'baz', a = 'b'}|lang=lua}}, <code>numKeys</code> will return {{code|code={1, 3, 4}|lang=lua}}. == affixNums == <syntaxhighlight lang="lua"> TableTools.affixNums(t, prefix, suffix) </syntaxhighlight> Takes a table <code>''t''</code> and returns an array containing the numbers of keys with the optional prefix <code>''prefix''</code> and the optional suffix <code>''suffix''</code>. For example, for the table {{code|code={a1 = 'foo', a3 = 'bar', a6 = 'baz'}|lang=lua}} and the prefix <code>'a'</code>, <code>affixNums</code> will return {{code|code={1, 3, 6}|lang=lua}}. All characters in <code>''prefix''</code> and <code>''suffix''</code> are interpreted literally. == numData == <syntaxhighlight lang="lua"> TableTools.numData(t, compress) </syntaxhighlight> Given a table with keys like <code>"foo1"</code>, <code>"bar1"</code>, <code>"foo2"</code>, and <code>"baz2"</code>, returns a table of subtables in the format {{code|code={ [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }|lang=lua}}. Keys that don't end with an integer are stored in a subtable named <code>"other"</code>. The compress option compresses the table so that it can be iterated over with <code>ipairs</code>. == compressSparseArray == <syntaxhighlight lang="lua"> TableTools.compressSparseArray(t) </syntaxhighlight> Takes an array <code>''t''</code> with one or more nil values, and removes the nil values while preserving the order, so that the array can be safely traversed with <code>ipairs</code>. Any keys that are not positive integers are removed. For example, for the table {{code|code={1, nil, foo = 'bar', 3, 2}|lang=lua}}, <code>compressSparseArray</code> will return {{code|code={1, 3, 2}|lang=lua}}. == sparseIpairs == <syntaxhighlight lang="lua"> TableTools.sparseIpairs(t) </syntaxhighlight> This is an iterator function for traversing a sparse array <code>''t''</code>. It is similar to <code>[[mw:Extension:Scribunto/Lua reference manual#ipairs|ipairs]]</code>, but will continue to iterate until the highest numerical key, whereas <code>ipairs</code> may stop after the first <code>nil</code> value. Any keys that are not positive integers are ignored. Usually <code>sparseIpairs</code> is used in a generic <code>for</code> loop. <syntaxhighlight lang="lua"> for i, v in TableTools.sparseIpairs(t) do -- code block end </syntaxhighlight> Note that <code>sparseIpairs</code> uses the <code>[[mw:Extension:Scribunto/Lua reference manual#pairs|pairs]]</code> function in its implementation. Although some table keys appear to be ignored, all table keys are accessed when it is run. == size == <syntaxhighlight lang="lua"> TableTools.size(t) </syntaxhighlight> Finds the size of a key/value pair table. For example, for the table {{code|code={foo = 'foo', bar = 'bar'}|lang=lua}}, <code>size</code> will return <code>2</code>. The function will also work on arrays, but for arrays it is more efficient to use the <code>#</code> operator. Note that to find the table size, this function uses the <code>[[mw:Extension:Scribunto/Lua reference manual#pairs|pairs]]</code> function to iterate through all of the table keys. == keysToList == <syntaxhighlight lang="lua"> TableTools.keysToList(t, keySort, checked) </syntaxhighlight> Returns a list of the keys in a table, sorted using either a default comparison function or a custom <code>''keySort''</code> function, which follows the same rules as the <code>comp</code> function supplied to <code>[[mw:Extension:Scribunto/Lua reference manual#table.sort|table.sort]]</code>. If <code>''keySort''</code> is <code>false</code>, no sorting is done. Set <code>''checked''</code> to <code>true</code> to skip the internal type checking. == sortedPairs == <syntaxhighlight lang="lua"> TableTools.sortedPairs(t, keySort) </syntaxhighlight> Iterates through a table, with the keys sorted using the <code>keysToList</code> function. If there are only numerical keys, <code>sparseIpairs</code> is probably more efficient. == isArray == <syntaxhighlight lang="lua"> TableTools.isArray(value) </syntaxhighlight> Returns <code>true</code> if <code>''value''</code> is a table and all keys are consecutive integers starting at 1. == isArrayLike == <syntaxhighlight lang="lua"> TableTools.isArrayLike(value) </syntaxhighlight> Returns <code>true</code> if <code>''value''</code> is iterable and all keys are consecutive integers starting at 1. == invert == <syntaxhighlight lang="lua"> TableTools.invert(arr) </syntaxhighlight> Transposes the keys and values in an array. For example, {{code|invert{ "a", "b", "c" }|lua}} yields {{code|code={ a=1, b=2, c=3 }|lang=lua}}. == listToSet == <syntaxhighlight lang="lua"> TableTools.listToSet(arr) </syntaxhighlight> Creates a set from the array part of the table <code>''arr''</code>. Indexing the set by any of the values of the array returns <code>true</code>. For example, {{code|listToSet{ "a", "b", "c" }|lua}} yields {{code|code={ a=true, b=true, c=true }|lang=lua}}. See also [[Module:Lua set]] for more advanced ways to create a set. == deepCopy == <syntaxhighlight lang="lua"> TableTools.deepCopy(orig, noMetatable, alreadySeen) </syntaxhighlight> Creates a copy of the table <code>''orig''</code>. As with <code>mw.clone</code>, all values that are not functions are duplicated and the identity of tables is preserved. If <code>''noMetatable''</code> is <code>true</code>, then the metatable (if any) is not copied. Can copy tables loaded with <code>mw.loadData</code>. Similar to <code>mw.clone</code>, but <code>mw.clone</code> cannot copy tables loaded with <code>mw.loadData</code> and does not allow metatables <em>not</em> to be copied. == sparseConcat == <syntaxhighlight lang="lua"> TableTools.sparseConcat(t, sep, i, j) </syntaxhighlight> Concatenates all values in the table that are indexed by a positive integer, in order. For example, {{code|sparseConcat{ "a", nil, "c", "d" }|lua}} yields {{code|"acd"|lua}} and {{code|sparseConcat{ nil, "b", "c", "d" }|lua}} yields {{code|"bcd"|lua}}. == length == <syntaxhighlight lang="lua"> TableTools.length(t, prefix) </syntaxhighlight> Finds the length of an array or of a quasi-array with keys with an optional <code>''prefix''</code> such as "data1", "data2", etc. It uses an [[exponential search]] algorithm to find the length, so as to use as few table lookups as possible. This algorithm is useful for arrays that use metatables (e.g. [[mw:Extension:Scribunto/Lua reference manual#frame.args|frame.args]]) and for quasi-arrays. For normal arrays, just use the [[mw:Extension:Scribunto/Lua reference manual#Length operator|# operator]], as it is implemented in [[C (programming language)|C]] and will be quicker. == inArray == <syntaxhighlight lang="lua"> TableTools.inArray(arr, valueToFind) </syntaxhighlight> Returns <code>true</code> if <code>''valueToFind''</code> is a member of the array <code>''arr''</code>, and <code>false</code> otherwise. <includeonly>{{Sandbox other|| [[Category:Lua metamodules|TableTools]] }}</includeonly> 6fcbbdc2d7277a80556bd4c7daaf380903d3d831 Template:Used in system 10 178 429 2023-06-29T00:10:31Z Vorlitix 3 Created page with "{{#invoke:High-use|main|1=|2={{{2|}}}|system={{#if:{{{1|}}}|{{{1}}}|in system messages}}<noinclude>|nocat=true</noinclude>}}<noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude>" wikitext text/x-wiki {{#invoke:High-use|main|1=|2={{{2|}}}|system={{#if:{{{1|}}}|{{{1}}}|in system messages}}<noinclude>|nocat=true</noinclude>}}<noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 0abe278369db6cbbe319e7452d7644e27e11c532 Module:Transclusion count 828 181 432 2023-06-29T00:12:38Z Vorlitix 3 Created page with "local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Modu..." Scribunto text/plain local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Module namespace template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text) end -- If in template or module namespace, look up count in /data if template ~= nil then namespace = mw.title.new(template, "Template").namespace if namespace == 10 or namespace == 828 then template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end local index = mw.ustring.sub(mw.title.new(template).text,1,1) local status, data = pcall(function () return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) end) if status then return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")]) end end end -- If database value doesn't exist, use value passed to template if return_value == nil and frame.args[1] ~= nil then local arg1=mw.ustring.match(frame.args[1], '[%d,]+') if arg1 and arg1 ~= '' then return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) end end return return_value end -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] function p.tabulate(frame) local list = {} for i = 65, 91 do local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) for name, count in pairs(data) do table.insert(list, {mw.title.new(name, "Template").fullText, count}) end end table.sort(list, function(a, b) return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2]) end) local lang = mw.getContentLanguage(); for i = 1, #list do list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2])) end return table.concat(list) end return p 000ef6bcbf7b66e727870b0c300c4009da300513 Module:High-use 828 182 433 2023-06-29T00:13:16Z Vorlitix 3 Created page with "local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then..." Scribunto text/plain local p = {} -- _fetch looks at the "demo" argument. local _fetch = require('Module:Transclusion_count').fetch local yesno = require('Module:Yesno') function p.num(frame, count) if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "a very large number of" else return_value = "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format("approximately&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) if percent >= 1 then return_value = string.format("%s&#x20;pages, or roughly %s%% of all", return_value, percent) end end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) -- Only show the information about how this template gets updated if someone -- is actually editing the page and maybe trying to update the count. local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or '' if count == nil then if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end local title = mw.title.getCurrentTitle() if title.subpageText == "doc" or title.subpageText == "sandbox" then title = title.basePageTitle end local systemMessages = frame.args['system'] if frame.args['system'] == '' then systemMessages = nil end -- This retrieves the project URL automatically to simplify localiation. local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format( mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p.num(frame, count)) local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used '; if systemMessages then used_on_text = used_on_text .. systemMessages .. ((count and count > 2000) and ("''', and " .. templateCount) or ("'''")) else used_on_text = used_on_text .. templateCount .. "'''" end local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format( (mw.title.getCurrentTitle().namespace == 828 and "module" or "template"), title.fullText, title.fullText, mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage" ) local infoArg = frame.args["info"] ~= "" and frame.args["info"] if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.' if infoArg then info = info .. "<br />" .. infoArg end sandbox_text = info .. '<br /> To avoid major disruption' .. (count and count >= 100000 and ' and server load' or '') .. ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText ) end return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text end function p.main(frame) local count = nil if yesno(frame.args['fetch']) == false then if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end else count = _fetch(frame) end local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]" local type_param = "style" local epilogue = '' if frame.args['system'] and frame.args['system'] ~= '' then image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]" type_param = "content" local nocat = frame:getParent().args['nocat'] or frame.args['nocat'] local categorise = (nocat == '' or not yesno(nocat)) if categorise then epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}') end elseif (frame.args[1] == "risk" or (count and count >= 100000)) then image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } .. epilogue else return require('Module:Message box').main('ombox', { type = type_param, image = image, text = p.text(frame, count), expiry = (frame.args["expiry"] or "") }) .. epilogue end end return p 134551888e066954a89c109d2faa8af71a4454a4 Module:TableTools 828 183 434 2023-06-29T00:14:43Z Vorlitix 3 Created page with "------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke...." Scribunto text/plain ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should not -- -- be called directly from #invoke. -- ------------------------------------------------------------------------------------ local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false if -- not. Although it doesn't operate on tables, it is included here as it is useful -- for determining whether a value can be a valid table key. Lua will generate an -- error if a NaN is used as a table key. ------------------------------------------------------------------------------------ function p.isNan(v) return type(v) == 'number' and v ~= v end ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ function p.shallowClone(t) checkType('shallowClone', 1, t, 'table') local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ function p.removeDuplicates(arr) checkType('removeDuplicates', 1, arr, 'table') local isNan = p.isNan local ret, exists = {}, {} for _, v in ipairs(arr) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return -- {1, 3, 6}. ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table -- of subtables in the format -- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}. -- Keys that don't end with an integer are stored in a subtable named "other". The -- compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ function p.size(t) checkType('size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then return tostring(item1) < tostring(item2) else return item1 < item2 end end ------------------------------------------------------------------------------------ -- keysToList -- -- Returns an array of the keys in a table, sorted using either a default -- comparison function or a custom keySort function. ------------------------------------------------------------------------------------ function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'}) end local arr = {} local index = 1 for k in pairs(t) do arr[index] = k index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(arr, keySort) end return arr end ------------------------------------------------------------------------------------ -- sortedPairs -- -- Iterates through a table, with the keys sorted using the keysToList function. -- If there are only numerical keys, sparseIpairs is probably more efficient. ------------------------------------------------------------------------------------ function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local arr = p.keysToList(t, keySort, true) local i = 0 return function () i = i + 1 local key = arr[i] if key ~= nil then return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- isArray -- -- Returns true if the given value is a table and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArray(v) if type(v) ~= 'table' then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- isArrayLike -- -- Returns true if the given value is iterable and all keys are consecutive -- integers starting at 1. ------------------------------------------------------------------------------------ function p.isArrayLike(v) if not pcall(pairs, v) then return false end local i = 0 for _ in pairs(v) do i = i + 1 if v[i] == nil then return false end end return true end ------------------------------------------------------------------------------------ -- invert -- -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> -- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to -- the index of the last duplicate) and NaN values are ignored. ------------------------------------------------------------------------------------ function p.invert(arr) checkType("invert", 1, arr, "table") local isNan = p.isNan local map = {} for i, v in ipairs(arr) do if not isNan(v) then map[v] = i end end return map end ------------------------------------------------------------------------------------ -- listToSet -- -- Creates a set from the array part of the table. Indexing the set by any of the -- values of the array returns true. For example, {"a", "b", "c"} -> -- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them -- never equal to any value (including other NaNs or even themselves). ------------------------------------------------------------------------------------ function p.listToSet(arr) checkType("listToSet", 1, arr, "table") local isNan = p.isNan local set = {} for _, v in ipairs(arr) do if not isNan(v) then set[v] = true end end return set end ------------------------------------------------------------------------------------ -- deepCopy -- -- Recursive deep copy function. Preserves identities of subtables. ------------------------------------------------------------------------------------ local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = _deepCopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end ------------------------------------------------------------------------------------ -- sparseConcat -- -- Concatenates all values in the table that are indexed by a number, in order. -- sparseConcat{a, nil, c, d} => "acd" -- sparseConcat{nil, b, c, d} => "bcd" ------------------------------------------------------------------------------------ function p.sparseConcat(t, sep, i, j) local arr = {} local arr_i = 0 for _, v in p.sparseIpairs(t) do arr_i = arr_i + 1 arr[arr_i] = v end return table.concat(arr, sep, i, j) end ------------------------------------------------------------------------------------ -- length -- -- Finds the length of an array, or of a quasi-array with keys such as "data1", -- "data2", etc., using an exponential search algorithm. It is similar to the -- operator #, but may return a different value when there are gaps in the array -- portion of the table. Intended to be used on data loaded with mw.loadData. For -- other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of the number -- of unnamed template parameters, so use this function for frame.args. ------------------------------------------------------------------------------------ function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] which is -- only needed by this one function doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function (i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end ------------------------------------------------------------------------------------ -- inArray -- -- Returns true if valueToFind is a member of the array, and false otherwise. ------------------------------------------------------------------------------------ function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p 085e7094ac84eb0132ee65822cf3f69cd8ba3d81 Harpmann & Associates 0 126 435 378 2023-06-29T00:22:35Z Vorlitix 3 wikitext text/x-wiki [[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]] Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida. The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees. == Bombing == On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building. [[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]]There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is. [[Category:Map locations]] [[Category:Lore]] 8c8946351ff77b326b62c83ae9b070d58aea95a4 436 435 2023-06-29T00:23:13Z Vorlitix 3 wikitext text/x-wiki [[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]] Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida. The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees. == Bombing == On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building. [[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is. [[Category:Map locations]] [[Category:Lore]] 45cff96db7832fed3938a409d0b743cccf794846 437 436 2023-06-29T00:23:47Z Vorlitix 3 wikitext text/x-wiki [[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]] Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida. The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees. == Bombing == [[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building. There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is. [[Category:Map locations]] [[Category:Lore]] 64da2b189092b2e035a22efee4aaad6e98e2bd65 438 437 2023-06-29T00:23:58Z Vorlitix 3 wikitext text/x-wiki [[File:Harpmann office3.png|thumb|328x328px|The current Harpmann & Associates office in Wachalassa.]] Harpmann & Associates LLP is an American law firm based in [[Orange Blossom Beach|Orange Blossom Beach, Florida]]. It was established by Earl Harpmann in 1993, operating in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. Harpmann & Associates has had three offices, with the main office in being in the Wachalassa district of Orange Blossom Beach, Florida. The first Harpmann & Associates office was located in the [[Lake Drive Plaza|Lake Drive Plaza strip mall]], but was subsequently bombed by an unknown perpetrator in 2009. The office was replaced with [[Charlotte's Neighborhood Market]] after being reconstructed. The second Harpmann & Associates office was opened as a temporary location after the bombing, being located in a strip mall off the US 71. All of their offices are located within Orange Blossom Beach, Florida. After said bombing, Earl Harpmann & Associates has been forced to downscale in terms of operations and employees. == Bombing == [[File:Harpmann bombing.png|thumb|281x281px|The Harpmann & Associates office in Lake Drive Plaza after being bombed.]] On Tuesday October 30th, 2008, there was a bombing orchestrated by a singular masked individual on the main Harpmann & Associates office. At 6:10, 1 masked man drove into the Lake Drive Plaza strip mall in a all-black 2001 Chevrolet Express 1500 with illegally tinted windows. Shortly after, a homemade incendiary bomb went through one of the left windows on the building, setting the office ablaze. At around 6:18, a small unidentified IED went through the same window and immediately killed all civilians within the building. There were three deaths and five injuries caused by the bombing. Those who died within the bombing were employees of Harpmann & Associates and those who were injured were people inside of the [[Blossom Photography]] building. Not long after, the masked individual drove off. As of May 28, 2009, it is not yet known who said masked individual is. [[Category:Map locations]] [[Category:Lore]] 04581b71a1187233d487cb3dc8f41e40fb392f28 File:7 eleven.png 6 184 439 2023-06-29T00:50:45Z Carsop 4 wikitext text/x-wiki yeah e029e41f4e015e2ea604a0d81a05a05186f15b03 Aiden's Used Cars 0 139 441 387 2023-06-29T01:57:56Z Carsop 4 redid article wikitext text/x-wiki [[File:Aiden's used cars new.png|thumb|510x510px|Aiden's Used Cars as of April 5th 2009.]] Aiden's Used Cars is a small used car dealership off of State Road 30 in [[Orange Blossom Beach]]. Aiden's Used Cars was opened in 2005 by Aiden Jones. It is believed the dealership does not perform well, but despite this the dealership remains open. The dealership is known for selling cheap cars that tend to have various issues or defects, ranging from technical or electric issues such as no A/C, to cosmetic body damage such as dents or scratches or in some extreme cases, rust damage. The dealership has an unusually high amount of cameras installed on the building. The dealership sells some basic auto parts as means of making extra income, but installations must be done by the buyer as the dealership does not offer auto part installation or auto repairs. From December 2nd 2008 - January 15th 2009 the dealership inside was closed for renovations, repairs to the building, installation of new equipment and cameras, with a shootout delaying the reopening of the dealership. Sales could still be made during the renovations if the buyer had called the dealership ahead of time. == Shootout == The dealership fell victim of a shootout on December 19th 2008, but it is unknown if the location being the dealership was deliberate as a potential robbery gone wrong, or was simply a coincidence or mistaken identity. [[Category:Map locations]] 12a9f9f8d6df5f18b01af972d06953547f8dd931 442 441 2023-06-29T01:59:31Z Carsop 4 adjusted image size wikitext text/x-wiki [[File:Aiden's used cars new.png|thumb|450x450px|Aiden's Used Cars as of April 5th 2009.]] Aiden's Used Cars is a small used car dealership off of State Road 30 in [[Orange Blossom Beach]]. Aiden's Used Cars was opened in 2005 by Aiden Jones. It is believed the dealership does not perform well, but despite this the dealership remains open. The dealership is known for selling cheap cars that tend to have various issues or defects, ranging from technical or electric issues such as no A/C, to cosmetic body damage such as dents or scratches or in some extreme cases, rust damage. The dealership has an unusually high amount of cameras installed on the building. The dealership sells some basic auto parts as means of making extra income, but installations must be done by the buyer as the dealership does not offer auto part installation or auto repairs. From December 2nd 2008 - January 15th 2009 the dealership inside was closed for renovations, repairs to the building, installation of new equipment and cameras, with a shootout delaying the reopening of the dealership. Sales could still be made during the renovations if the buyer had called the dealership ahead of time. == Shootout == The dealership fell victim of a shootout on December 19th 2008, but it is unknown if the location being the dealership was deliberate as a potential robbery gone wrong, or was simply a coincidence or mistaken identity. [[Category:Map locations]] 6f10e24623c2f370764cf516a76d390d7466ec78 File:CrameworkLogoFullTransparentShadeless.png 6 186 443 2023-07-21T05:50:25Z Hatmanthehat 2 wikitext text/x-wiki The logo for Cramework eac78b910e4995731a61b8a34ed76e3553169440 Cramework 0 4 444 202 2023-07-21T05:51:43Z Hatmanthehat 2 Added logo wikitext text/x-wiki [[Category:Miscellaneous information]] {{stub}} [[File:CrameworkLogoFullTransparentShadeless.png|thumb|205x205px|Logo used since 2023]] Cramework is the proprietary framework used in Orange Blossom Beach, and planned to be used in Central Red. It is designed in a modular way, and is used to handle specific parts of the game such as a custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game. == Features == Cramework is packaged with several features and utilities to help with development. Flags are used to enable specific features, and are useful for debugging, or setting up games using Cramework. An example could involve multiple versions of OBB, where one version is stable, and the other is for development. With Cramework, it's easy to reuse the code once and also enable/disable flags for each version. == Confusions and Misunderstandings == '''Cramework is not a game engine!''' It is solely a framework used to aid the development of realism-esque games on Roblox. The actual game engine is Roblox’s own proprietary engine. 779aec8cf659fa2e37724400432ac7dc9ab50b33 445 444 2023-07-21T06:08:56Z Hatmanthehat 2 more formal and less pretentious wikitext text/x-wiki [[Category:Miscellaneous information]] {{stub}} [[File:CrameworkLogoFullTransparentShadeless.png|thumb|205x205px|Logo used since 2023]] Cramework is a proprietary framework used in Orange Blossom Beach (and also planned to be used in Central Red). It was made to be reusable across multiple game projects, and is used to handle generic parts of the game such as custom chat, scoreboard, etc. All of the code in [[Orange Blossom Beach (game)|Orange Blossom Beach]] is bundled within Cramework for easier updating of the game, and also as a way to reuse code across different games where it may be useful to do so. Cramework was officially added to the main game on July 31, 2022 as part of the 0.1.7.1 update for the game. == Features == Cramework is packaged with several convenient features and utilities to help with development. One example is a registry, which is a hierarchical tree node system that uses key/value pairs to globally store data across the game. They can be used to enable/disable specific features and store settings. This gives the benefit of making the framework very customizable to one's own liking. == Confusions and Misunderstandings == '''Cramework is not a game engine.''' It is first and foremost a framework used to aid the development of realism-esque games on Roblox. The game engine in question is Roblox’s own proprietary engine. c5bcfbad4e9f52e82ee208a70ab934feec2206ca Kaleidoscopic Records 0 63 446 364 2023-08-03T00:41:47Z Hatmanthehat 2 I made itg small wikitext text/x-wiki {{stub}} [[File:Kaleidoscopic records.png|thumb|373x373px|Kaleidoscopic Records]] Kaleidoscopic Records is a record store owned by KaleidoscopicPrism in [[Orange Blossom Beach]] off of Lake Drive. [[Category:Map locations]] b88e5a0112441f7c735ce1100c8af8a5369e28c4 Orange Blossom Beach 0 33 447 377 2023-09-08T01:57:25Z wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a city in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. The city sits at a total population of around 33,105 as of the [https://en.wikipedia.org/wiki/2000_United_States_census 2000 U.S. census]. It sits a few miles out of [https://en.wikipedia.org/wiki/Panama_City,_Florida Panama City] and was established as an outpost by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. Orange Blossom Beach wasn't incorporated until 1962. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. The city is quite notable due to it's delicious array of mouth-watering food spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. Orange Blossom Beach is also the origin of [[Si Cola Inc.|Si Cola Corporation]]. [[Category:Map locations]] 49611193c04b754cd71dbd60925e05811a1a382f 448 447 2023-09-08T02:43:53Z Vorlitix 3 JOHN SIMULATOR wikitext text/x-wiki [[Category:Lore]] ''For the game named Orange Blossom Beach, see [[Orange Blossom Beach (game)]].'' Orange Blossom Beach is a city in [https://en.wikipedia.org/wiki/Gulf_County,_Florida Gulf County, Florida]. The city sits at a total population of around 33,105 as of the [https://en.wikipedia.org/wiki/2000_United_States_census 2000 U.S. census]. It sits a few miles out of [https://en.wikipedia.org/wiki/Panama_City,_Florida Panama City] and was established as an outpost by French and Spanish Settlers during the mid 1500s, slowly growing in size during the American annexation of Spanish Florida and eventually becoming a small city during the years of post-war America in the late 50s. Orange Blossom Beach was incorporated in 1962. It is also located near the [[Central Red - US|American Headquarters of Central Red]], With tests being conducted weekly in the facility mainly consisting of Biochemical and Particle Research Technology, with it being on the causes of minor seismic activity in the Western Florida Panhandle area. With many conspiracy theories circulating around the facility in the general area of OBB, it has had a major influence on the city since its creation. Orange Blossom Beach is also the origin point of the allegedly infamous fast food chain, [[Taco Ball]]. The city is quite notable due to it's delicious array of mouth-watering food spread across the Southern United States. Along with being the origin of Orange Blossom Beach Filming Studios, it is also the origin for southern [[Harpmann & Associates|renowned attorney Earl Harpmann]], with his knowledge of the law making him one of the best Lawyers in the area. Orange Blossom Beach is also the origin of [[Si Cola Inc.|Si Cola Corporation]]. [[Category:Map locations]] 57f7f6323a305e2c0f7bdf2f0a33ff283476f2bf The Men of Business 0 187 449 2023-09-27T03:30:31Z Hatmanthehat 2 I'll work on this later wikitext text/x-wiki {{Stub}} The Men of Business is a Roblox group that hosts the game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. It was created on March 19th, 2022. 40778542887a3acac7f509cca037aa3b044af3fb 455 449 2023-09-30T20:58:03Z Vorlitix 3 BIGGEST wikitext text/x-wiki [[File:MENOFBUSINESS2023ICON.png|thumb|212x212px|The current icon for the Men of Business group, created on September 24th, 2023.]] The Men Of Business, also previously known as The Three Men of Business, Orange Blossom Beach Community, and fully known as [] The Men of Business [], is the main group that maintains ownership of the game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that goes by the name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants and has had several name changes in the past. ==History== The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022. Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group. Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business". Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023 On September 25th 2023, The group was renamed to [[The Men of Business|[] The Men of Business []]] after an internal decision to rename the group. This was done so the group could branch out into other Cramework-related games in the future, and as well as to end the constant naming of Orange Blossom Beach. This also brought management changes, reorganizing the functions of roles in the group. [[Category:Miscellaneous information]] b8748105b28626f6269f69ecea9c3df2cb6b043d 458 455 2023-09-30T21:01:40Z Vorlitix 3 wikitext text/x-wiki [[File:MENOFBUSINESS2023ICON.png|thumb|212x212px|The current icon for the Men of Business group, created on September 24th, 2023.]] The Men Of Business, also previously known as The Three Men of Business, Orange Blossom Beach Community, and fully known as [] The Men of Business [], is the main group that maintains ownership of the game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that goes by the name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants and has had several name changes in the past. ==History== The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022. Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group. Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business". Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023 On September 25th 2023, The group was renamed to [https://www.roblox.com/groups/12451517/The-Men-of-Business <nowiki>[] The Men of Business []</nowiki>] after an internal decision to rename the group. This was done so the group could branch out into other Cramework-related games in the future, and as well as to end the constant naming of Orange Blossom Beach. This also brought management changes, reorganizing the functions of roles in the group. [[Category:Miscellaneous information]] 551f119d37745148720b07083f8304efdb5f9ad2 Orange Blossom Beach Community 0 96 450 267 2023-09-27T03:39:01Z Vorlitix 3 wikitext text/x-wiki ''Not to be confused with the [https://obb.miraheze.org/wiki/Orange_Blossom_Beach_(game)#Community Community of Orange Blossom Beach]'' Orange Blossom Beach Community is the main group that maintains ownership of the eponymous game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that too goes by the eponymous name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants. ==History== The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022. Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group. Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business". Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023 [[Category:Miscellaneous information]] ac0424cdafc53a1844a20a2462b574fd0450dc9d 452 450 2023-09-30T20:35:09Z Carsop 4 added second renaming wikitext text/x-wiki ''Not to be confused with the [https://obb.miraheze.org/wiki/Orange_Blossom_Beach_(game)#Community Community of Orange Blossom Beach]'' Orange Blossom Beach Community is the main group that maintains ownership of the eponymous game [[Orange Blossom Beach (game)|Orange Blossom Beach]]. The group is owned by the placeholder account that too goes by the eponymous name of OrangeBlossomBeach, however the creators of both the game and the group are listed the rank below Group Holder. The group was created on December 3rd, 2021 and was later made public the following day on December 4th, 2021. The group specializes in announcements and promotional material such as shirts, t-shirts, and pants. ==History== The group itself was created on December 3rd, 2021. Shortly after being created, the group uploaded a white t-shirt with the OBB Seal entitled [https://www.roblox.com/catalog/8169204428/OBB-City-Seal ''OBB City Seal'']. The following day, another shirt was uploaded entitled [https://www.roblox.com/catalog/8175121554/Tacoball-employee-grey ''Tacoball employee+ (grey)'']. This shirt would eventually be taken off-sale and replaced with [https://www.roblox.com/catalog/11657492439/Tacoball-Employee ''<nowiki>Tacoball Employee [+]</nowiki>''] on November 4, 2022. Group ownership would eventually be changed to the OrangeBlossomBeach account. On September 16, 2022 at 10:49 PM, the main Orange Blossom Beach game was moved from Hattozo's profile to The Three Men of Business. This caused a variety of issues, such as issues with the games audio and tool gripping. Another major issue was with the in-game chat. Many of these issues were resolved in [[0.29.3]], specifically with audio issues in the developer console and the tool gripping with soda items. Due to Orange Blossom Beach being moved to The Three Men of Business, most if not all of the games assets would be uploaded to the group. Later, on November 12, 2022, The Three Men of Business was renamed to Orange Blossom Beach Community after a vote on the server's discord. The poll to rename the group was done on September 30, 2022 and had the results of 12 to change the name and 1 against the name change. An additional reason to the name change was the addition of Carsop to the executive management of the group, defeating the purpose of the name "The Three Men of Business". Orange Blossom Beach Community continues to host updates for the main game and announce them. The group itself also releases clothing, as mentioned before. Clothing for the Orange Blossom Beach police were introduced on September 21, 2022 and clothing for [[Craig World Cafe]] employees were created on March 30, 2023 On September 25th 2023, The group was renamed to [[The Men of Business|[] The Men of Business []]]. [[Category:Miscellaneous information]] 77f2086ede3377a0827b3b506c6e6f6f483f54b3 456 452 2023-09-30T20:59:03Z Vorlitix 3 Redirected page to [[Special:MyLanguage/The Men of Business]] wikitext text/x-wiki #REDIRECT [[Special:MyLanguage/The Men of Business|</nowiki>The Men of Business]] 151d1bbaac4474d9ae41a20de25041b0d3aed9fe User:Vorlitix 2 43 451 119 2023-09-30T20:29:46Z Vorlitix 3 wikitext text/x-wiki hello orange blossom beach is the last roblox project i will ever be working on unless otherwise signed, yours truly, the whale 713ff3848ced660364395bc5a17812d1065f263f User:Carsop 2 188 453 2023-09-30T20:36:33Z Carsop 4 ya wikitext text/x-wiki hi c22b5f9178342609428d6f51b2c5af4c0bde6a42 File:MENOFBUSINESS2023ICON.png 6 189 454 2023-09-30T20:55:05Z Vorlitix 3 wikitext text/x-wiki f 4a0a19218e082a343a1b17e5333409af9d98f0f5 The Three Men of Business 0 190 457 2023-09-30T20:59:52Z Vorlitix 3 Redirected page to [[Special:MyLanguage/The Men of Business]] wikitext text/x-wiki #REDIRECT [[Special:MyLanguage/The Men of Business|</nowiki>The Men of Business]] 151d1bbaac4474d9ae41a20de25041b0d3aed9fe User:ThatGuy9049 2 191 459 2023-10-13T07:27:44Z ThatGuy9049 16 yes wikitext text/x-wiki it's a me thatguy from good boys yes yes 63d89934698a391c121f0c77cf811a719eb58d56 Alpha 0.0.7 0 59 460 227 2023-10-16T05:46:23Z Hatmanthehat 2 typo wikitext text/x-wiki OBB Alpha 0.0.7 is a major update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. It was released March 25, 2022. Alpha 0.0.7 added (and then removed) a brand new chat and adjusted the cmdr commands. == Development and Changelog == There isn't much about development, but it took a while to decide whether to remove Kohls Admin or to keep it as a secondary admin panel. === Changelog: === * Added a custom chat * More cmdr commands * Kohls Admin temporarily removed * '''Custom chat removed -''' * '''Kohls Admin temporarily added back +''' ''For the previous version, see [[Alpha 0.0.6]]'' ''For the next version, see [[Alpha 0.0.8]]'' [[Category:Versions]] 72248ae0376b60a23068a022ad3431aefd2799b5 Alpha 0.1.7.2 0 192 463 2023-11-05T04:43:17Z Carsop 4 created page wikitext text/x-wiki OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022. == Development and Changelog == Alpha 0.1.7.2 '''Changelog:''' * Various bug fixes * AK-47 sounds were restored after being accidentally overridden * Health command was added * [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits ''For the previous version, see [[Alpha 0.1.6]]'' ''For the previous subversion, see [[Alpha 0.1.7.1]]'' ''For the next subversion, see [[Alpha 0.1.7.1|Alpha 0.1.7.3]]'' ''For the next version, see [[Alpha 0.1.8]]'' [[Category:Versions]] c4e33a1231eef52908948d963a7a34f11dafc4ec 464 463 2023-11-05T04:46:16Z Carsop 4 wikitext text/x-wiki OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, the same day as Alpha 0.1.7 and Alpha 0.1.7.1. == Development and Changelog == Alpha 0.1.7.2 was focused mainly on minor fixes with minimal additions. '''Changelog:''' * Various bug fixes * AK-47 sounds were restored after being accidentally overridden * Health command was added * [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits ''For the previous version, see [[Alpha 0.1.6]]'' ''For the previous subversion, see [[Alpha 0.1.7.1]]'' ''For the next subversion, see [[Alpha 0.1.7.1|Alpha 0.1.7.3]]'' ''For the next version, see [[Alpha 0.1.8]]'' [[Category:Versions]] 51a712745bed6f0099d51f3df1711bca2724bf27 465 464 2023-11-05T04:47:23Z Carsop 4 wikitext text/x-wiki OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, the same day as Alpha 0.1.7 and Alpha 0.1.7.1. == Development and Changelog == Alpha 0.1.7.2 was mainly focused on bug fixes and had minimal additions. '''Changelog:''' * Various bug fixes * AK-47 sounds were restored after being accidentally overridden * Health command was added * [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits ''For the previous version, see [[Alpha 0.1.6]]'' ''For the previous subversion, see [[Alpha 0.1.7.1]]'' ''For the next subversion, see [[Alpha 0.1.7.1|Alpha 0.1.7.3]]'' ''For the next version, see [[Alpha 0.1.8]]'' [[Category:Versions]] 04a7c63548323564de3449f4f8fd1e73e22ae42b 466 465 2023-11-05T05:22:33Z Carsop 4 wikitext text/x-wiki OBB Alpha 0.1.7.2 is a minor update to [[Orange Blossom Beach (game)|Orange Blossom Beach RP]]. The update was released on July 31, 2022, the same day as Alpha 0.1.7 and Alpha 0.1.7.1. == Development and Changelog == Alpha 0.1.7.2 was mainly focused on bug fixes and had minimal additions. '''Changelog:''' * Various bug fixes * AK-47 sounds were restored after being accidentally overridden * Health command was added * [https://devforum.roblox.com/t/topbarplus-v291-construct-intuitive-topbar-icons-customise-them-with-themes-dropdowns-captions-labels-and-much-more/1017485 TopbarPlus] by ForeverHD was added to the credits ''For the previous version, see [[Alpha 0.1.6]]'' ''For the main version, see [[Alpha 0.1.7]]'' ''For the previous subversion, see [[Alpha 0.1.7.1]]'' ''For the next subversion, see [[Alpha 0.1.7.3]]'' ''For the next version, see [[Alpha 0.1.8]]'' [[Category:Versions]] d85bd571c082adb58907ed51b804abb9fc6ff6c1